java - Gradle - 复制多模块项目构建中所有更改模块的 jar
问题描述
我有一个包含大约 100 个模块的多模块构建。有没有办法只为更改的模块创建 jar 文件并将它们复制到某个地方?
该任务应该是一个独立的任务,无需修改现有的 jar 任务
解决方案
所以,假设你所有的模块都是简单的java
模块,你所有的模块都会有一个jar
任务(类型Jar
)来构建相应模块的 JAR 文件。由于 Gradle 增量构建功能,每个jar
任务只会在内容以任何方式更改(例如编译新文件)时执行。
您可以简单地doLast
为这些任务中的每一个添加一个闭包,它将创建的文件复制到您的目录,因为只有当且仅当任务执行时,才会执行闭包:
单个任务的示例:
jar {
doLast {
project.copy {
from archivePath
into 'path/to/my/location'
}
}
}
如果这适用于单个模块,我们可以尝试与 @lance-java 类似的方法:
allprojects { project ->
project.tasks.withType(Jar).all { jar ->
jar.doLast {
project.copy {
from jar.archivePath
into 'path/to/my/location'
}
}
}
}