![](/img/trans.png)
[英]How can I enumerate all modules in a multi-module Gradle project, with file locations?
[英]Gradle - Copy jars of all changed modules in a multi-module project build
我有大约100个模块的多模块构建。 有没有一种方法可以只为更改的模块创建jar文件并将其复制到某个地方?
该任务应该是独立任务,无需修改现有的jar任务
假设您正确设置了所有任务输入和输出,则gradle支持最新检查和开箱即用的任务。 查看最新检查(又名增量构建)
对于复制,您可以使用“ 同步”任务,该任务将仅复制(或删除)与目标目录不同的jar。
例如
task syncJars(type: Sync) {
allprojects { p ->
from p.tasks.withType(Jar)
}
into 'path/to/target/dir'
}
因此,假设所有模块都是简单的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'
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.