java - 从任务中调用任务的替代方法,Gradle

标签 java gradle

我有一个自定义的Gradle插件,可以从模板文件生成Java文件。我在不同位置有几个这样的模板文件,我需要对其全部进行“编译”以生成所需的Java文件。一旦有了文件,我想将它们打包到.jar中。

我首先想到的是,我将从其他任务中的自定义插件执行“编译”任务。就像是:

task compileFromLocationA <<{
    compileTemplate.execute()...
}

task compileFromLocationB
    ...

packageJar(depends: compileFromLocationA, compileFromLocationB)
    ...

但是,您不能以编程方式从另一个任务中调用一个任务。我听说我可以使用dependsOnfinalizedBy来解决此问题,但是我还无法弄清楚如何在此处应用这些关键字。这样的“最佳实践”是什么?我是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/

相关文章:

java - 无法从图像数组列表加载 imageView

java - 多边形相交失败,碰撞 "size"太大

java - 如何使用map的依赖注入(inject)来测试Spring boot应用程序配置类?

android - 大包装名称问题

android - Android 项目中的库太多?

java - 基础Java,在方法之间传递数据

java - 优化sqlite应用程序启动

java - 无法执行jar文件:mainclass属性丢失Intellij Gradle

android - 构建 android -gradle 项目时出现 crashlytics 开发人员工具错误

android - 有没有办法让 gradle task lintRelease 在为特定模块执行时什么都不做?