Gradle 在执行期间在 ant 目标上执行 doFirst

Gradle doFirst on ant target during execution

我正在尝试覆盖一个预先构建的古老的 ant 脚本。由于某些原因,我无法直接编辑 ant 文件。

------------gradle 任务的伪装--------

ant.importBuild antFileName

defaultTasks = ['greet']

task takeCare << {
println('Switch off security cam')
}

------------蚂蚁目标的伪装--------

<target name="greet">
        <echo>Be nice, say hello!</echo>
         <antcall target="tackle"/>
</target>

<target name="tackle">
        <echo>Brought him down!</echo>
</target>

我想要实现的是在调用 ant target tackle 之前对 gradle 进行预检查。所以我的输出看起来像 -

友好点,打个招呼! 关闭安全摄像头。 把他打倒了!

我该如何实现?

你试过了吗?

tackle.dependsOn takeCare

更新

如果您使用 dependsOn 和 运行

gradle tackle 

你会得到

:takeCare
Switch off security cam
:tackle
[ant:echo] Brought him down!

但是如果你使用运行greet,takeCare不会被执行,因为你直接调用了ant。所以迎接 运行 的蚂蚁目标而不是 gradle 任务。

您可以尝试在gradle中更改铲球目标。

ant.project.getTargets().find{it.value.name == "tackle"}.value

请参阅 java 文档:Target