我有一个自定义的Gradle插件,可以从模板文件生成Java文件。我在不同位置有几个这样的模板文件,我需要对其全部进行“编译”以生成所需的Java文件。一旦有了文件,我想将它们打包到.jar中。
我首先想到的是,我将从其他任务中的自定义插件执行“编译”任务。就像是:
task compileFromLocationA <<{
compileTemplate.execute()...
}
task compileFromLocationB
...
packageJar(depends: compileFromLocationA, compileFromLocationB)
...
但是,您不能以编程方式从另一个任务中调用一个任务。我听说我可以使用
dependsOn
或finalizedBy
来解决此问题,但是我还无法弄清楚如何在此处应用这些关键字。这样的“最佳实践”是什么?我是Gradle的新手,但使用官方文档并不能走得很远。
最佳答案
您可以使用dependsOn
完成此操作。
这是一个例子:
apply plugin: 'java'
task taskA <<{
println 'task A'
}
task taskB (type:Copy){
println 'B'
}
task taskC (type:Copy){
println 'C'
}
task taskBC (dependsOn:['taskB','taskC'])<<{
println 'BC'
}
taskBC.mustRunAfter taskA
您还可以使用
mustRunAfter
来确保一个任务始终在另一个任务之后运行。
关于java - 从任务中调用任务的替代方法,Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59498373/