我们有一个 Java webstart 应用程序,希望在使用 Gradle 构建项目后将所有第三方库部署/复制到 lib/ext/并将我们所有的项目 jar 文件部署/复制到 lib/。
使用 this answer对于上一个问题,我几乎能够完成这个,除了我的共享项目库被复制到 lib/和 lib/ext/。但是,它们只能复制到 lib/。
现在我正在寻找一种方法从该任务中排除所有共享项目库:
task copyDeps(type: Copy) {
from(subprojects.configurations.runtime)
into project.file('lib/ext')
}
我试图添加类似 exclude(subprojects.jar) 的东西,但我不知道如何在我可以传递给 exclude() 的参数中获取所有子项目 jar。
我怎样才能做到这一点?我也乐于接受有关如何实现将库复制到上述文件夹的主要目标的其他建议。
最佳答案
我现在通过记住 copyJars
中项目 jar 文件的名称然后在 copyDeps
中排除它们来解决我的问题:
List<String> projectLibs = new ArrayList<String>()
task copyJars(type: Copy, dependsOn: subprojects.jar) {
eachFile { fileCopyDetails ->
projectLibs.add(fileCopyDetails.name)
}
from(subprojects.jar)
into file('lib')
}
task copyDeps(type: Copy, dependsOn: copyJars) {
eachFile { fileCopyDetails ->
if (fileCopyDetails.name in projectLibs){
fileCopyDetails.exclude()
}
}
from (subprojects.configurations.runtime)
into file('lib/ext')
}
如果有人有更好的解决方案,我会很高兴听到:-)
关于java - 从 Gradle 中的复制任务中排除所有子项目 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24909667/