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

标签 java jar gradle java-web-start

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

- root-project
  |-sub-project-a
  |-sub-project-b
  |-sub-project-c

现在,因为我们正在创建一个 Java webstart 应用程序,所以我们需要签署所有项目 jar 以及所有第三方库(依赖项)。

我现在的方法是将所有构建的子项目 jar 和所有第三方库复制到一个单独的文件夹中,并执行一个任务来对它们进行签名。但是我无法复制 jar 。

这是我在根 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。

也许我的做法是完全错误的。我需要做什么才能将所有创建的和第三方 jar 复制到一个文件夹中?

最佳答案

将这段代码添加到 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])

关于java - 使用 Gradle 将所有创建的和第三方 jar 复制到一个文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24868668/

相关文章:

gradle - gradle从最终jar中不可用的任务生成的文件

java - 如何将我的 Java 项目导出为外部 Jar 而不包含源代码

maven - OSGI Bundle vs jar 依赖

maven - 如何检查gradle从哪里下载其依赖项?

android - Android Google Services无法下载4.2.0

java - ... 上不存在 'Access-Control-Allow-Origin' header 。因此不允许访问 Origin 'null'

java - Wildfly war部署获取资源文件的路径

java - 为什么 spring 只处理未经检查的异常

java - 有没有好的线程安全格式缓存库?

android - 无法禁用Android Checkstyle错误