将项目合并到单个JAR中
我正试图像这样将4个项目合并到一个JAR中将项目合并到单个JAR中,jar,merge,gradle,Jar,Merge,Gradle,我正试图像这样将4个项目合并到一个JAR中 jar { from { project(":p1").sourceSets.main.output.classesDir project(":p2").sourceSets.main.output.classesDir project(":p3").sourceSets.main.output.classesDir } } 这是一种工作,每三个项目都有部分,但不完整。每当有像p1/my
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
进入
我只有一门课。没有警告。这是预期的还是错误(我希望如此)?我能设法避免吗
正如我在回答中所说的,我完全做错了。与
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}}
}
只有闭包的返回值才重要,所以前两行不是ops。此外,还需要建立必要的任务依赖关系。尝试:
jar {
from { subprojects.sourceSets.main.output }
}
(
SourceSetOutput
是Buildable
,这意味着Gradle可以自动推断任务依赖关系。)真的吗?那我都做错了。但是我不想要所有的子项目,只有三个。我可以做一些过滤或加入三组,但你能告诉我怎么做吗?正如你所看到的,我在这里相当无知。
jar {
from { subprojects.sourceSets.main.output }
}