簡體   English   中英

Gradle - 一個項目,多個包,多個罐子

[英]Gradle - one project, multiple packages, multiple jars

我問你一個非常基本的問題,但我希望你能找到時間來幫助我:

我正在嘗試實現一個java項目,它可以吐出幾個不同的程序,這些程序部分依賴於我的其他項目。

為了簡單起見,我希望將所有代碼放在一個項目中,由Gradle運行,因此如果我對中央庫(例如數據庫連接器)進行更改,則所有子程序都會自動收到更改。

示例可能如下所示:

項目:

  • program_A
  • central_library
  • PROGRAM_B

輸出:

  • program_A.jar(包括中央圖書館)
  • program_B.jar(包括中央圖書館)

現在我遇到了嚴重的問題,為此找到了正確的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 publishToMavenLocalgradle 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM