2015-11-14 104 views
3

我有以下的項目配置(純Java):搖籃多模塊罐子

/ 
/Base_module 
/A_module 

A_module取決於Base_module。

我想的.jar包含A_module類+的Base_module類,但不能做到這一點。

用下面的配置,我只能實現不同的罐子每個模塊:

settings.gradle

include 'Base_module', 'A_module' 

的build.gradle

.... 
project(':Base_module') { 
} 

project(':A_module') { 
    dependencies { 
     compile project(':Base_module') 
    } 
} 
.... 

什麼我需要添加到實現完整.jar

在此先感謝。

+0

並且怎麼樣在你的根的build.gradle依賴關係部分? – fge

+0

依賴關係在根build.gradle – Cheborra

回答

1

您可以嘗試在您的根構建腳本中創建Jar類型的自定義任務,該腳本將包含所有子項目的所有類或僅包含一些子項目。這可能是類似於:

//declare an array, containing subproject names, which classes you want to collect 
def projectsToCollect = [':Base_Module',':A_Module'] 

//create a custom task, which assembles an jar-archive and depends on subproject compilation tasks, 
//that causes sibprojects sources been compiled before thist task runs 
task singleJar(type: Jar , dependsOn: projectsToCollect.collect{ it+":compileJava"}) { 
    //set new jar name 
    baseName = 'singleJar' 
    //set files, which will be included in this new jar 
    from files(projectsToCollect.collect{ project(it).sourceSets.main.output }) 
} 

可以盡情享受它,修改sourcesets,如果你在你的子項目有一些自定義,或者如果你想添加的測試。

+0

上爲空,請您澄清一下代碼的每個部分?我不是Gradle專家,無法讓我的頭腦發現它 – Cheborra

+0

@Cheborra試圖澄清alittle,如果你沒有改變你的源代碼集,因爲你不知道它,這個解決方案應該工作。 – Stanislav