实现你想要的是建立一个多项目构建,有两个子项目(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