我正在尝试将4个项目合并为一个这样的JAR
jar {
from {
project(":p1").sourceSets.main.output.classesDir
project(":p2").sourceSets.main.output.classesDir
project(":p3").sourceSets.main.output.classesDir
}
}
它有点工作,那里有三个项目的部分,但不完整。每当有一个像p1/mypackage
和p2/mypackage
这样的公共目录时,Gradle就无法合并它们并且(我认为)最后一个目录。所以不要合并
p1
mypackage
MyFirst.class
p2
mypackage
MySecond.class
到
mypackage
MyFirst.class
MySecond.class
我只有一节课。没有警告。这是预期还是错误(我希望如此)?我可以以某种方式避免它吗?
正如答案所述,我做错了。与
jar {
from {[
project(":p1").sourceSets.main.output.classesDir,
project(":p2").sourceSets.main.output.classesDir,
project(":p3").sourceSets.main.output.classesDir
]}
}
它似乎有效。
但这更好:
jar {
from {[":p1", ":p2", ":p3"].collect {project(it).sourceSets.main.output.classesDir}}
}
答案 0 :(得分:0)
只有闭包的返回值很重要,所以前两行是no-ops。此外,需要建立必要的任务依赖性。尝试:
jar {
from { subprojects.sourceSets.main.output }
}
(SourceSetOutput
是Buildable
,这意味着Gradle可以自动推断任务依赖项。)