2017-10-06 83 views
2

我問你一個很基本的問題,但我希望你能找到時間來幫助我:搖籃 - 一個項目,多個包,多瓶

我想實現一個Java的項目,可以吐出幾個不同的程序,部分依賴於我的其他項目。爲了簡單起見,我想讓一個項目中的所有代碼都由Gradle運行,所以如果我更改中央庫(例如數據庫連接器),所有子程序都會自動接收變化。

一個例子可能是這樣的:

項目:

  • program_A
  • central_library
  • PROGRAM_B

輸出:

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

現在我有嚴重的麻煩找到這個正確的buildscript,想知道是否有人在這裏可以幫助我(包括中央圖書館) 。

P.S. :由於我對此很陌生,如果我應該通過Gradle項目中的不同模塊來實現此目的,而不是Gradle項目源文件中的不同軟件包,請隨時告訴我:)

回答

0

創建根目錄並將每個庫或程序進入自己的子目錄。 在每個子項目中創建一個gradle項目。 例如,您可以通過運行

gradle init --type=java-library 

gradle init --type=java-application 

然後在根目錄下創建gradle這個多模塊項目中創建的Gradle框架項目。基本上 只運行

gradle init 

,然後創建一個settings.gradle並列出所有子項目那裏。

這個gradle這個文檔中描述實際上很好:

0

如果我理解正確的話,你想要做的是,當你改變你的本地項目,你想其他項目看到這些細節。爲此,您需要將您的項目發佈到某種類型的回購,例如Maven回購。您可以從命令行gradle publishToMavenLocalgradle 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 
      } 
     } 
    } 
0

一種方式來處理,這是有根的項目,保存它裏面的其他三個項目。

指定其settings.gradle文件中的子項目:

rootProject.name = 'RootProject' 
include 'program_A' 
include 'central_library' 
include 'program_B' 

有了這個地方,program_a可以通過在其build.gradle添加依賴取決於central_library

dependencies { 
    compile project(':central_library') 
} 

我有一個類似設置爲my projects之一,但「中央庫」是根項目,子模塊是測試環境。