實現你想要的是建立一個多項目構建,有兩個子項目(foobase & foo2的),其中源集foo2的配置爲含有除自身的源套foobase的一個乾淨的方式源。
爲了獲得工件的不同依賴關係,您只需在子項目中聲明dependencies
部分。
爲了測試這個,我在每個子項目中創建了一個具有一個java文件的多項目構建。爲了簡化此處的輸出,根build.gradle
文件包含所有內容,包括子項目特定的自定義項。然而,在「現實生活」中,我始終將子項目特定的配置置於build.gradle
文件中正確的子項目級別。
的gradle這個build文件包含
- 添加源組從foobase到
- 部署foo2的
- 不同依賴於兩個項目,一個本地的倉庫(驗證POM的正確創建)
- 用於IntelliJ IDEA和Eclipse的可選IDE插件
總而言之,I en DED了以下內容:
項目結構
build.gradle => root project build file
settings.gradle => specification of included subprojects
foo2\ => foo2 subproject folder
src\
main\
java\
Foo2.java => Empty class
foobase\ => foobase subproject folder
src\
main\
java\
FooBase.java => Empty class
設置。gradle這個
include ':foobase', ':foo2'
的build.gradle
allprojects {
apply plugin: 'idea'
apply plugin: 'eclipse'
group = 'org.foo'
version = '1.0'
}
subprojects {
apply plugin: 'java'
apply plugin: 'maven'
repositories {
mavenCentral()
}
uploadArchives {
it.repositories.mavenDeployer {
repository(url: "file:///tmp/maven-repo/")
}
}
}
project(':foobase') {
dependencies {
compile 'log4j:log4j:1.2.13'
}
}
project(':foo2') {
dependencies {
compile 'log4j:log4j:1.2.16'
}
sourceSets.main.java.srcDirs project(':foobase').sourceSets.main.java
sourceSets.main.resources.srcDirs project(':foobase').sourceSets.main.resources
sourceSets.test.java.srcDirs project(':foobase').sourceSets.test.java
sourceSets.test.resources.srcDirs project(':foobase').sourceSets.test.resources
}
請注意,我增加了對資源和測試的源目錄爲好。如果不需要,可以省略最後三行。
要驗證編譯:
- 確保兩個jar文件包含所有想要的類。
- 驗證兩個已部署的maven pom是否具有正確的依賴關係。
在我的情況:
foobase-1.0.jar
只包含FooBase.class
foo2-1.0.jar
同時包含FooBase.class
和Foo2.class
- 上傳
foobase-1.0.pom
包含依賴於log4j-1.2.13
- 上傳
foo2-1.0.pom
包含依賴關係log4j-1.2.16
謝謝!我會給它一個鏡頭。 – sjlee 2013-03-27 06:11:42