2016-06-18 111 views
0

我有一個主項目依賴於2個子項目。所有3個項目都有一個名爲server的自定義配置。gradle子項目配置依賴不會被添加到戰爭

當我有以下戰爭任務時,只有主項目configuration.server中的依賴項被添加到戰爭中。

task fatWar(type: War) { 
    archiveName = "arms-fat.war" 
    classpath configurations.server 
    classpath configurations.compile 
} 

如何將subProject服務器配置依賴項添加到war中?

編輯:

這裏是我的背景下建立文件的一些片段。

rootProject的build.gradle

configurations { 
    server 
} 
dependencies { 
    server 'org.glassfish.jersey.media:jersey-media-multipart:2.22.2' 
    ... 
} 
task fatWar(type: War) { 
    archiveName = "arms-fat.war" 
    classpath configurations.server 
    classpath configurations.compile 
} 

子項目的build.gradle

configurations { 
    server 
} 
dependencies { 
    server 'mysql:mysql-connector-java:5.1.38' 
    ... 
} 

當我運行fatWar任務,使用mysql-connector.jar,以及其他沒有在戰爭中捆綁

+0

對不起,我錯過了子項目的細節。我不知道如何解決這個問題。在Gradle討論區發佈詳細問題。 –

+0

查看本帖子中的評論:https://discuss.gradle.org/t/how-to-jar-all-class-output-from-all-sub-projects-into-one-jar/7049/2 。 –

+0

感謝您的鏈接。我能夠解決我的問題與子項目。關閉 – rodney757

回答

0

我能解決這個問題(感謝大衛提供的鏈接)有以下幾點:

subprojects.each { subproject -> evaluationDependsOn(subproject.path) } 

task fatWar(type: War) { 
    archiveName = "arms-fims-fat.war" 

    subprojects.each { subproject -> 
     project.configurations.server.dependencies.addAll(subproject.configurations.server.dependencies) 
    } 

    classpath configurations.server 
    classpath configurations.compile 
} 
0

實際上,「classpath」是一個屬性,而不是一個方法,所以用兩個賦值替換兩個賦值,其值爲「configurations.server + configurations.compile」。

+0

問題是子項目configurations.server(在單獨的build.gradle)沒有被添加。只需添加rootProject服務器和rootProject以及subProjects編譯配置即可。 – rodney757

+0

是的,我很困惑。我認爲我的修改答案更可能。 –

+0

它仍然缺少子項目配置。服務器依賴關係 – rodney757

相關問題