【发布时间】:2016-09-16 21:59:42
【问题描述】:
我的构建使用来自两个项目的源代码:ProjectA 和 ProjectB,并使用来自 ProjectB 的类和资源生成 JAR。我定义了自定义 sourceSet mainProjectB 应该在单独的目录中输出:
sourceSets {
mainProjectB {
output.classesDir = "$buildDir/build/classes/projectB"
output.resourcesDir = "$buildDir/build/resources/projectB"
java { srcDirs = ['src/main/java']}
resources { srcDirs = ['src/main/resources']}
}
mainProjectA {
java { srcDirs = [
'../projectA/src/main/java'
]}
resources { srcDirs = [
'../projectA/src/main/resources'
]}
}
test {
java {
srcDirs = [
'../projectA/src/test/java',
'src/test/java'
]}
resources {
srcDirs = [
'../projectA/src/test/resources',
'src/test/resources'
]}
}
}
compileJava {
source sourceSets.mainProjectB.allJava
source sourceSets.mainProjectA.allJava
}
processResources {
from sourceSets.mainProjectB.resources
from sourceSets.mainProjectA.resources
}
jar {
from sourceSets.mainProjectB.output.classesDir
from sourceSets.mainProjectB.output.resourcesDir
}
问题:自定义 sourceSet mainProjectB 输入指定的输出目录。 没有创建目录“$buildDir/build/classes/projectB”和“$buildDir/build/resources/projectB”,因此,JAR 包含来自两个项目(而不是 ProjectB)的文件。
更新:
项目 A 和 B 具有循环依赖关系。这就是他们必须共享源代码的原因。
【问题讨论】:
-
你是在做一个合并projectA和projectB内容的jar吗?
-
否:带有来自 ProjectB 的类和资源的 JAR