我们有一个多项目gradle设置,每个子项目都有一个Java jar:
- root-project
|-sub-project-a
|-sub-project-b
|-sub-project-c
现在,因为我们正在创建一个Java webstart应用程序,所以我们需要签署所有项目jar以及所有第三方库(依赖项)。
我的方法是将所有已构建的子项目jar和所有第三方库复制到一个单独的文件夹中,并执行签名任务。但是我无法复制罐子。
这是我在root build.gradle中的方法:
task copyFiles(type: Copy, dependsOn: subprojects.jar) {
from configurations.runtime
from("build/libs")
into("webstart/lib")
include('*.jar')
}
与:
task signAll(dependsOn: [copyFiles]) << {
new File('webstart/signed').mkdirs()
def libFiles = files { file('webstart/lib').listFiles() }
...
}
然后我尝试执行gradle signAll。但是,我只能在webstart / lib文件夹中找到一个带有根项目名称的空jar。
也许我的做法完全错了。我该怎么做才能复制所有创建的&amp; thrid-party jar进入单个文件夹?
答案 0 :(得分:10)
将这段代码添加到root build.gradle中,它应该可以正常工作:
allprojects {
apply plugin: 'java'
repositories {
mavenCentral()
}
}
task copyJars(type: Copy, dependsOn: subprojects.jar) {
from(subprojects.jar)
into project.file('dest')
}
task copyDeps(type: Copy) {
from(subprojects.configurations.runtime)
into project.file('dest/lib')
}
task copyFiles(dependsOn: [copyJars, copyDeps])