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

时间:2013-07-31 16:03:29

标签: ant import gradle task

我有这个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>

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

显然,这不是我想要的......我怎样才能防止这种行为?

1 个答案:

答案 0 :(得分:0)

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

在任何情况下,应该说ant.importBuild具有已知的局限性,与直接运行Ant构建相比,可能会导致行为差异。如果没有用Gradle自己的抽象来描述构建,你也会失去Gradle的许多优点。因此,我建议将构建移植到Gradle,而不是使用ant.importBuild(在现实世界中不经常使用)。请注意,在Gradle不提供任何等效项的情况下,重用Ant 任务是完全可以的。