自动运行Gradle脚本中从build.xml导入的Ant任务
我有这个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>
该Ant目标-compile
始终是我调用gradlew assemble
时要执行的第一个任务。 这没有任何意义。 该任务在任何地方都不会被调用,它只是antCompile
的依赖。 为什么它被执行?
显然,这不是我想要的......我怎样才能防止这种行为?
似乎按预期工作。 构建脚本使得jar
依赖于antCompile
,根据你的语言,它依赖于-compile
。 assemble
依赖于jar
,所以执行gradle assembmle
应该先运行-compile
。
无论如何,应该说ant.importBuild
具有已知的局限性,并且与直接运行Ant构建相比,可能会导致行为上的差异。 当你不用Gradle自己的抽象来描述构建时,你也会失去许多Gradle的优点。 因此,我建议将构建移植到Gradle,而不是使用ant.importBuild
(在现实世界中不常用)。 请注意,在Gradle不提供任何等价物的情况下重用Ant任务是完全正确的。
上一篇: Ant task imported from build.xml in Gradle script is running automatically
下一篇: ANT sql task: How to run SQL and PL/SQL and notice execution failure?