使用Gradle将所有创建的和第三方jar复制到一个文件夹中

Dom*_*nic 7 java jar java-web-start gradle

我们有一个多项目gradle设置,每个子项目有一个Java jar:

- root-project
  |-sub-project-a
  |-sub-project-b
  |-sub-project-c
Run Code Online (Sandbox Code Playgroud)

现在,因为我们正在创建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')
}
Run Code Online (Sandbox Code Playgroud)

和...一起:

task signAll(dependsOn: [copyFiles]) << {
    new File('webstart/signed').mkdirs()
    def libFiles = files { file('webstart/lib').listFiles() }
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试执行gradle signAll.但是,我只能在webstart/lib文件夹中找到一个带有根项目名称的空jar.

也许我的方法是完全错误的.如何将所有创建的和第三方派对复制到一个文件夹中?

Opa*_*pal 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])
Run Code Online (Sandbox Code Playgroud)

  • 嗨,谢谢你的回答,这很棒!只有一件事:现在我共享的所有项目的jar都被复制到dest和dest/lib.例如,如果sub-project-a requries sub-project-b,则sub-project-b.jar将被复制到dest和dest/lib.有什么方法可以防止共享项目被复制到dest/lib? (3认同)