Java 将jar文件从多项目gradle构建部署到目标目录
我有一个多项目的gradle构建,我想将从多个项目构建的所有JAR部署到一个目标目录中,只是不知道如何准确地执行 目录结构非常标准:Java 将jar文件从多项目gradle构建部署到目标目录,java,gradle,Java,Gradle,我有一个多项目的gradle构建,我想将从多个项目构建的所有JAR部署到一个目标目录中,只是不知道如何准确地执行 目录结构非常标准: . ├── project1 │ ├── build │ │ └── libs │ │ └── project1.jar │ └── src │ └── main │ ├── java │ └── resources ├── project2 │ ├── build │ │
.
├── 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文件时不要立即部署它们。他们需要先测试,等等。