2

我有这个 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 脚本。但是,由于某种原因,在 invoke 启动时会调用此任务gradlew assemble它甚至不会等待jar任务启动。

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

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

</target>

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

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

4

1 回答 1

0

似乎按预期工作。构建脚本jar依赖于antCompile,根据你的话,依赖于-compileassemble取决于jar,所以执行gradle assembmle应该-compile首先运行。

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

于 2013-07-31T17:08:25.280 回答