Java 将jar文件从多项目gradle构建部署到目标目录

Java 将jar文件从多项目gradle构建部署到目标目录,java,gradle,Java,Gradle,我有一个多项目的gradle构建,我想将从多个项目构建的所有JAR部署到一个目标目录中,只是不知道如何准确地执行 目录结构非常标准: . ├── project1 │   ├── build │   │   └── libs │   │   └── project1.jar │   └── src │   └── main │   ├── java │   └── resources ├── project2 │   ├── build │   │

我有一个多项目的gradle构建,我想将从多个项目构建的所有JAR部署到一个目标目录中,只是不知道如何准确地执行

目录结构非常标准:

.
├── project1
│   ├── build
│   │   └── libs
│   │       └── project1.jar
│   └── src
│       └── main
│           ├── java
│           └── resources
├── project2
│   ├── build
│   │   └── libs
│   │       └── project2.jar
│   └── src
│       └── main
│           ├── java
│           └── resources
├── build.gradle
├── gradle.properties
└── settings.gradle
我需要将
project1.jar
project2.jar
复制到目标目录中

另一个问题是,项目数量将继续增长。因此,几周后可能会有一个
project3.jar
。如果我不需要更新任何东西就可以将其jar文件也包含在副本中(除了编辑我的settings.gradle文件以在构建中包含project3之外),那就太好了

只要把
/*/build/libs/*.jar
复制到某个目标目录就行了,我想,我只是不知道怎么做


谢谢你的帮助

您只需将以下代码段添加到
project1
project2
中的
build.gradle

jar {
   destinationDir project.file('../dest')
}
编辑(在评论中讨论后)

您需要将以下代码段添加到root build.gradle文件中

subprojects {
   apply plugin: 'java'
}

task copyFiles(type: Copy, dependsOn: subprojects.jar) {
   from(subprojects.jar)
   into project.file('dest')
}
作为对以下内容的补充:

如果只想复制子项目JAR的子集,可以应用如下过滤器:

/** Returns true if a project has a source directory */
def hasSrc(proj){
    return new File(proj.projectDir, "src").exists()
}

/** Copies the jars of the subprojects to a dir of the umbrella project */
task copyJars(type: Copy, dependsOn: subprojects.jar) {
        // Skip empty subprojects
        from(subprojects.findAll{hasSrc(it)}.jar)
        into project.file("$buildDir/jars")
}
run.dependsOn copyJars

我正在寻找更多的方法来部署jar文件,而不仅仅是更改它们的创建位置。更新描述场景的问题。刚刚更新了问题@Opal,希望它更清楚。谢谢,嗯。。这仍然是一样的。如果您更改目录,就会创建一个jar文件,您将得到所需的结果。如果今晚我有时间的话,我会尝试使用复制任务来实现它,但我不确定这是否需要。我需要在创建jar文件时不要立即部署它们。他们需要先测试,等等。