我有这个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
的依赖项。为什么要执行?
显然,这不是我想要的......我怎样才能防止这种行为?
答案 0 :(得分:0)
似乎按预期工作。构建脚本使jar
依赖antCompile
,根据您的文字取决于-compile
。 assemble
取决于jar
,因此执行gradle assembmle
应首先运行-compile
。
在任何情况下,应该说ant.importBuild
具有已知的局限性,与直接运行Ant构建相比,可能会导致行为差异。如果没有用Gradle自己的抽象来描述构建,你也会失去Gradle的许多优点。因此,我建议将构建移植到Gradle,而不是使用ant.importBuild
(在现实世界中不经常使用)。请注意,在Gradle不提供任何等效项的情况下,重用Ant 任务是完全可以的。