2014-09-23 40 views
0

這是一個基本的gradle問題,但我找不到答案: 如果我有多個共享相同根目錄的獨立項目,應該如何爲他們使用不同的build.gradle文件?多個項目的基本gradle Q

例如目錄結構是這樣的:

src/main/java/package1/base1/project1package/ 

src/main/java/package1/base1/project2package/ 

它看起來像的build.gradle文件應放在根,但如何不同的兩個項目,這是完全獨立的,不與對方?當我使用gradle build命令時,如何指定一個要構建的項目?謝謝。

+0

這些似乎不是一個不同的項目,但單獨的軟件包。一般來說,不同的項目會有不同的路徑和文件樹。 – Opal 2014-09-24 05:57:14

+0

你說得對。我想要做的是看看不同項目如何共存並共享相同的根結構,並分別使用gradle構建。 – rdnnz 2014-09-24 14:45:05

+0

因此,您應該將公共代碼庫分離到第三個項目,然後將提到的項目依賴於第三個項目。 – Opal 2014-09-24 14:46:14

回答

0

說實話我不喜歡你提出的結構。該標準的一個看起來是這樣的:

 
    <root>/build.gradle 

    <root>/<subproject1>/build.gradle 
    <root>/<subproject1>/src/main/java/<basepackage>/<subproject1>/ 

    <root>/<subproject2>/build.gradle 
    <root>/<subproject2>/src/main/java/<basepackage>/<subproject2>/ 

subproject1subproject2是相互獨立的。此外:

  • <root>/build.gradle<root>/build.gradle可以包含所有子項目通用的構建配置,任務等。子項目1特定的東西然後在<root>/<subproject1>/build.gradle
  • 如果您在<root>/執行gradle build,所有子項目將被建立。如果在< root>/<子項目1> /中執行此操作,則只會構建子項目1

如需更多信息,請參閱http://www.gradle.org/docs/current/userguide/multi_project_builds.html

+0

感謝您的幫助。我給出了一些解釋,爲什麼我以這種方式組織結構。採用您提到的方式是一種很好的做法,而且瞭解靈活的解決方案(-b指定文件名)也是很好的做法。再次感謝。 – rdnnz 2014-09-24 03:40:23

0

讓我知道如果我是關閉基地,但基本上就是我想你想要做的僅僅是產生在兩盤源的兩個獨立的JAR碰巧住在相同的根目錄。這是一種非常有趣的方式來構建您的項目,就像@托馬斯提到的那樣,但假設您無法更改項目結構,您可以簡單地創建自定義source sets來解決此問題。

你的構建看起來像這樣。

apply plugin: 'java-base' 

sourceSets { 
    projA { 
     java { 
      srcDir 'src/main/java' 
      include 'pkg1/**' 
     } 
    } 
    projB { 
     java { 
      srcDir 'src/main/java' 
      include 'pkg2/**' 
     } 
    } 
} 

task projAJar(type: Jar) { 
    baseName 'projA' 
    from sourceSets.projA.output 
} 

task projBJar(type: Jar) { 
    baseName 'projB' 
    from sourceSets.projB.output 
} 

儘管這在技術上是一個搖籃項目,這兩個源將每個人都有自己的編譯任務,罐子任務和配置。你會像這樣配置你的依賴關係。

dependencies { 
    projACompile 'foo.org:lib:1.0' 
    projBCompile 'bar.org:lib:2.0' 
} 
+0

這是一個非常正式的答案。非常感謝。我的情況有點怪異。基本上我想創建一些示例項目,因爲我的代碼片段在相同的目錄結構下以非常接近的方式片段化,因此我可以輕鬆瀏覽它們。我採取了訣竅,使用-b選項爲不同的項目選擇不同的構建配置文件。所以這些構建配置文件可以放在同一個目錄下,但要獨立使用。我同意這不是組織產品代碼結構的方式,而只是將代碼片段組合在一起的一種便捷方式。 – rdnnz 2014-09-24 03:38:28