我有一个包含一些Java子项目的多项目设置。 我希望有一个顶级任务来分发整个批次,例如“buildAll”,它为每个子项目收集每个JAR,包括所有第三方依赖项。到目前为止我所拥有的是:
task buildAll(type: Copy) {
destinationDir = file("$rootProject.buildDir/")
project.subprojects.each { p ->
from(p.jar) {
into("projects/${p.name}")
}
from (p.configurations.runtime) {
exclude "**/project/**" //<- does not work
into("projects/${p.name}/lib")
}
}
}
这很好用,它创建了一个文件夹,其中包含“build / projects”文件夹下每个项目的名称,并包含所有JAR(项目和第三方),但有些子项目有项目依赖项< / strong>之间,例如项目A依赖于项目B.因此,此任务将获得Project B JAR并将其放在“projectA / lib”文件夹下。
-- build/
------ projects/
----------- projectA/
---------------- projectA.jar
---------------- lib/
------------------- guava.jar
------------------- projectB.jar <-- I don't want it here
----------- projectB/
---------------- projectB.jar
---------------- lib/
有没有办法过滤这个?
我尝试过使用exclude或include,但似乎Gradle忽略它们或者对象正在检查不是预期的。