2015-12-04 45 views
1

我試圖使用Spring Boot 1.3按照https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html構建完全可執行的WAR。如果我構建一個Gradle項目,它一切正常,但我有一個多項目構建,其中我有一個「根」項目,然後在它下面的幾個項目,我不能讓它建立任何東西,但標準的「胖」 WAR文件,沒有Jetty提供的運行時間,並且沒有腳本使其運行。從Gradle多項目構建構建完全可執行的Spring Boot 1.3戰爭

有誰知道如何做到這一點?

在我的根項目,我有以下的(有刪節):

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    ext { 
     springBootVersion = '1.3.0.RELEASE' 
    } 
    dependencies { 
     classpath "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion" 
    } 
} 

allprojects { 
    //Put instructions for all projects 
    repositories { 
     mavenCentral() // jcenter is missing spring-orm.4.1.6.RELEASE jar file so try mavenCentral first 
     jcenter { 
      url "http://jcenter.bintray.com/" 
     } 
     maven { url 'http://repo.opensourceagility.com/release' } 
    } 
} 

subprojects { 
    apply plugin: 'java' 
    apply plugin: 'spring-boot' 
} 

,然後它是一個網絡項目子項目,和我想建,我有:

apply plugin: 'war' 

dependencies { 
    // Include related projects 
    compile project(':project-model') 
    compile project(':project-dynamoDB') 

    // Core Spring Boot - note version is set in main build.gradle file 
    compile 'org.springframework.boot:spring-boot-starter-web' 

    // Remove Tomcat (included in -web) and include Jetty instead 
    providedRuntime 'org.springframework.boot:spring-boot-starter-jetty' 

    // Other Spring modules 
    compile 'org.springframework.boot:spring-boot-starter-social-facebook' 
    compile 'org.springframework.boot:spring-boot-starter-social-linkedin' 
    compile 'org.springframework.social:spring-social-google:1.0.0.RELEASE' 
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf' 
    compile 'org.springframework.boot:spring-boot-starter-security' 
    compile 'org.springframework.boot:spring-boot-starter-actuator' 
    compile 'org.springframework.boot:spring-boot-devtools' 
    compile 'org.springframework:spring-context' 
    compile 'org.springframework:spring-context-support' 
} 

configurations { 
    providedRuntime.exclude group: 'org.springframework.boot', module:'spring-boot-starter-tomcat' 
    all*.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' // exclude when using log4j 
} 

springBoot { 
    mainClass = 'rs.web.Weblication' 
    executable = true 
} 

bootRun { 
    addResources = true 
} 

processResources { 
    // exclude resources if they look like they're profile dependent but don't match the current env/profile 
    eachFile { d -> 
     if(d.name.endsWith('.xml') || d.name.endsWith('.yaml') || d.name.endsWith('.properties')) { 
      //def fname = d.name.replaceFirst(~/\.[^\.]+$/, '') 
      //if(fname.indexOf("-") > -1 && ! fname.endsWith("-" + environment)) { 
      // d.exclude() 
      //} else { 
      // replace @[email protected] listed below in properties/config files 
      filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: [ 
        activeProfiles: environment 
       ]) 
      //} 
     } 
    } 
} 

war { 
    baseName = 'project-web' 
    version = '1.0.0' 
    manifest { 
     attributes 'Implementation-Title': baseName, 
        'Implementation-Version': version 
    } 
    webXml = file('src/main/resources/web.xml') 
    // rename the war task which has profiles appended from warName-profile,profile2.war 
    // to warName-profile.profile2.war 
    classifier = environment.replaceAll(',','-') 
} 

但是當我構建它時(./gradlew build./gradlew subprojectname:build),一切都很好,並且創建了一個可用的WAR,但不是可執行的WAR。

通過一個項目,我工作得很好。

回答

2

啊哈,好吧我建立了一個測試多項目構建,它工作正常,所以它顯然是上面的配置。

我通過排除法工作,事實證明,有問題的區域是其目的是與環境變量文件重命名爲名稱的一部分行

classifier = environment.replaceAll(',','-') 

。這個過程似乎妨礙了腳本的加入;如果真的有必要,也許可以在之後應用。

相關問題