
[英]Concurrent modification exception when building gradle task from ant build.xml file
[英]Ant task imported from build.xml in Gradle script is running automatically
我在这个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>
当我调用gradlew assemble
时,该Ant目标-compile
始终是要执行的第一个任务。 这没有任何意义。 永远不会在任何地方调用该任务,它只是antCompile
的依赖antCompile
。 为什么要执行它?
显然,这不是我想要的...如何防止此类行为?
似乎按预期工作。 构建脚本使jar
依赖于antCompile
,根据您的话,它取决于-compile
。 assemble
取决于jar
,因此执行gradle assembmle
应该先运行-compile
。
无论如何,应该说ant.importBuild
具有已知的局限性,与直接运行Ant构建相比,行为可能有所不同。 如果不按照Gradle自己的抽象来描述构建,您还将失去Gradle的许多优势。 因此,我建议将构建版本移植到Gradle,而不要使用ant.importBuild
(在现实世界中ant.importBuild
使用)。 请注意,在Gradle不提供任何等效功能的情况下,重用Ant 任务是完全可以的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.