繁体   English   中英

从Gradle脚本中的build.xml导入的Ant任务自动运行

[英]Ant task imported from build.xml in Gradle script is running automatically

我在这个Java项目中导入了一些任务的Ant build.xml文件,如下所示:

ant.importBuild 'build.xml'

task myTaskA(dependsOn: ':Modules:MyModule:assemble') << {
    // do stuff here...
}

compileJava.dependsOn(myTaskA)

configure(jar) {
    include 'classes.dex'
}

jar.dependsOn(antCompile)

任务antCompile来自Ant build.xml脚本。 但是,由于某种原因,在调用gradlew assemble时会在启动时调用此任务, 它甚至不等待jar任务启动。

另外, antCompile任务在build.xml中定义为以下目标:

<target name="antCompile" depends="-setup">

</target>

当我调用gradlew assemble时,该Ant目标-compile 始终是要执行的第一个任务。 这没有任何意义。 永远不会在任何地方调用该任务,它只是antCompile的依赖antCompile 为什么要执行它?

显然,这不是我想要的...如何防止此类行为?

似乎按预期工作。 构建脚本使jar依赖于antCompile ,根据您的话,它取决于-compile assemble取决于jar ,因此执行gradle assembmle应该先运行-compile

无论如何,应该说ant.importBuild具有已知的局限性,与直接运行Ant构建相比,行为可能有所不同。 如果不按照Gradle自己的抽象来描述构建,您还将失去Gradle的许多优势。 因此,我建议将构建版本移植到Gradle,而不要使用ant.importBuild (在现实世界中ant.importBuild使用)。 请注意,在Gradle不提供任何等效功能的情况下,重用Ant 任务是完全可以的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM