我有一个包含约100个模块的多模块版本。有没有办法只为更改的模块创建jar文件,然后将其复制到某个地方?
该任务应该是独立任务,无需修改现有的jar任务
答案 0 :(得分:0)
假设您正确设置了所有任务输入和输出,则gradle支持最新检查和开箱即用的任务。参见up to date checks (aka incremental build)
对于复制,可以使用Sync任务,该任务将仅复制(或删除)与目标目录不同的jar。
例如
task syncJars(type: Sync) {
allprojects { p ->
from p.tasks.withType(Jar)
}
into 'path/to/target/dir'
}
答案 1 :(得分:0)
因此,假设您所有的模块都是简单的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'
}
}
}
}