[英]Gradle - one project, multiple packages, multiple jars
我問你一個非常基本的問題,但我希望你能找到時間來幫助我:
我正在嘗試實現一個java項目,它可以吐出幾個不同的程序,這些程序部分依賴於我的其他項目。
為了簡單起見,我希望將所有代碼放在一個項目中,由Gradle運行,因此如果我對中央庫(例如數據庫連接器)進行更改,則所有子程序都會自動收到更改。
示例可能如下所示:
項目:
輸出:
現在我遇到了嚴重的問題,為此找到了正確的buildcript,並且想知道這里是否有人可以幫助我。
PS:由於我是新手,如果我應該通過Gradleproject中的不同模塊而不是Gradleprojects源文件中的不同包來實現這一點,請隨時告訴我:)
解決這個問題的一種方法是擁有一個根項目,該項目包含其中的三個其他項目。
在其settings.gradle
文件中指定子項目:
rootProject.name = 'RootProject'
include 'program_A'
include 'central_library'
include 'program_B'
有了這個, program_a
可以通過在central_library
添加依賴項來依賴於build.gradle
:
dependencies {
compile project(':central_library')
}
我的一個項目中有類似的設置,雖然“中央庫”是根項目,子模塊是測試環境。
創建根目錄並將每個庫或程序放入其自己的子目錄中。 在每個子項目中創建一個gradle項目。 例如,您可以通過運行創建骨架gradle項目
gradle init --type=java-library
要么
gradle init --type=java-application
然后在根目錄中創建一個gradle多模塊項目。 基本上只運行
gradle init
然后創建一個settings.gradle並列出那里的所有子項目。
這實際上在gradle文檔中有很好的描述: https ://guides.gradle.org/creating-multi-project-builds/
如果我理解正確,您要做的是,當您更改本地項目時,您希望其他項目查看這些詳細信息。 為此,您需要將項目發布到某種回購,例如maven repo。 您可以從命令行gradle publishToMavenLocal
或gradle build pTMl
執行此gradle build pTMl
。 您也可以在build.gradle文件中執行以下操作:
task sourceJar (type : Jar) {
classifier = constants.extSources
from sourceSets.main.allSource
}
publications {
mavenJava(MavenPublication) {
from components.java
artifact(sourceJar) {
classifier "sources" //classifier = constants.extSources
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.