自动运行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 ,根据你的语言,它依赖于-compileassemble依赖于jar ,所以执行gradle assembmle应该先运行-compile

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

链接地址: http://www.djcxy.com/p/44341.html

上一篇: 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?