我最近開始使用Gradle並替換現有的基於Maven的項目。過去,我在使用Maven處理多模塊構建時遇到了很多問題。在處理多模塊組件時,Gradle一直呼吸着新鮮空氣,但它還不完美。Gradle多模塊項目設置
我有我的項目的以下文件夾佈局:
-- Projects
---- EnterpriseApp1
------ EarProject
-------- build.gradle
------ EjbProject
-------- build.gradle
------ WarProject
-------- build.gradle
------ properties.gradle
------ build.gradle
---- CommonLib
------ build.gradle
---- ClientApplication
------ build.gradle
我遇到的問題是,「EnterpriseApp1」和「ClientApplication」既取決於CommonLib項目。我不知道如何配置我的「EnterpriseApp1」構建文件以使用CommonLib項目作爲「EjbProject」的依賴項。我已經接近完成這項工作,但尚未完成工作。我通過複製「EnterpriseApp1」中的CommonLib文件夾獲得了成功,但這不是一個長期的解決方案。
下面是「EnterpriseApp1」我目前properties.gradle文件:
include "EarProject", "EjbProject", "WarProject"
includeFlat "CommonLib"
按照搖籃文檔中的「settings.gradle」文件中的「includeFlat」命令將包括在同一槓桿的項目「settings.gradle」文件所在的文件夾(所需行爲)。
EnterpriseApp1 /的build.gradle文件:
subprojects {
apply plugin: 'java'
sourceCompatibility = 1.6
group = 'org.example'
version = '1.0-SNAPSHOT'
repositories {
mavenCentral()
...
}
dependencies {
}
}
EnterpriseApp1/EjbProject /的build.gradle:
apply plugin: 'java'
sourceCompatibility = 1.6
repositories {
mavenCentral()
...
}
dependencies {
compile project(':CommonLib')
compile group: 'org.restlet.jee', name: 'org.restlet', version: '2.0.11'
compile group: 'ma.glasnost.orika', name: 'orika-core', version: '1.0'
...
compile group: 'javax.jmdns', name: 'jmdns', version: '3.4.1'
}
當我從EnterpriseApp1文件夾執行 「gradle這個乾淨的構建」 所有的依賴下載如預期的那樣,項目開始編譯(包括CommonLib項目),但是EjbProject項目在構建期間失敗,因爲它缺少CommonLib jar引用。 Gradle不夠聰明(或者我完全不知道;))將我的EjbProject配置爲使用從CommonLib項目構建階段生成的Jar。
對於漫長而複雜的設置,我表示歉意。我一直在試圖解決這個問題一段時間,但幾乎沒有想法。我非常感謝社區的任何幫助。
謝謝!
顯示的目錄佈局的縮進有些問題。這是一個構建,其中CommonLib和ClientApplication與EnterpriseApp1位於同一目錄級別,其他項目級別較低? (這將是一個非常罕見的佈局,通常是或者) –
此外,Gradle如何知道CommonLib是EjbProject的依賴關係,因爲您沒有在'EjbProject/build.gradle'中指定這樣的依賴關係? –
您是否打算說:這是我當前的「EnterpriseApp1」中的_settings.gradle_文件 –