我有一个多项目gradle设置。我想在重建jar的任何时候简单地复制任何项目的生成的jar文件,并认为这将在我的根项目的子项目关闭中起作用:
task copyJarToGenerated(type: Copy) {
from jar
into "../my-generated-jars/"
}
copyJarToGenerated.mustRunAfter jar
但是,如果我运行任何子项目的“ clean”任务然后执行“ jar”任务,则我的jar照常在build / libs下生成,但不会被复制。
查看gradle输出,它仅运行compileJava,processResources,类,然后运行jar。它没有运行copyJarToGenerated。
答案 0 :(得分:0)
方法mustRunAfter
没有定义任务依赖性,它只是强制执行特定顺序。它的基本含义是“如果两个任务都在构建中执行(无论出于何种原因),那么它们都将以指定的顺序执行”。
因此,您需要自己定义任务依赖项:
jar.finalizedBy copyJarToGenerated
您还可以只添加copyJarToGenerated
作为生命周期任务build
的依赖项:
build.dependsOn copyJarToGenerated
由于您在任务的方法jar
中指定了任务from
,因此将其注册为任务输入,因此隐式注册为任务依赖项。因此,您不再需要使用mustRunAfter
定义顺序。
您也可以考虑使用任务destinationDirectory
的属性jar
,而不是完全创建新任务。