我正在迁移到我们的模块中的一个模块说 gradle-module 。该模块有两个依赖项,目前使用ant构建 ant-module-1 和 ant-module-2
在我的gradle-module build.gradle中,我有以下条目:
task packageAntModule1(type: GradleBuild) {
buildFile = 'antModule1.gradle'
tasks = ['clean', 'package']
}
task packageAntModule2(type: GradleBuild) {
buildFile = 'antModule2.gradle'
tasks = ['clean', 'package']
}
compileJava.dependsOn(['packageAntModule1', 'packageAntModule2'])
两个文件antModule1.gradle和antModule2.gradle简单如下:
antModule1.gradle:
ant.importBuild '../ant-module1/build.xml'
antModule2.gradle:2
ant.importBuild '../ant-module2/build.xml'
我可以在日志中看到构建gradle-module的一部分,ant-module1目标被执行然后转移到构建ant-module2。但是这会崩溃,因为无法删除构建ant-module1时创建的临时文件。看看java进程,我可以看到第一个ant调用打开的java进程,它仍然保存着我的临时文件(加载一些自定义的ant任务)
所以我的问题是在完成执行所需目标后告诉gradle完成ant JVM的方法。
关于如何解决我的两个ant依赖项的任何其他建议也将不胜感激。通过神器或连接指向maven存储库不是一个选项,因为我们的ant构建不使用常春藤,这实际上是我们移动到gradle的主要原因
除此之外,在gradle构建失败后,ant启动的java进程仍处于活动状态,您必须手动杀死它们。
提前感谢您的输入
更新以添加gradle版本
$gradle -version
------------------------------------------------------------
Gradle 2.4
------------------------------------------------------------
Build time: 2015-05-05 08:09:24 UTC
Build number: none
Revision: 5c9c3bc20ca1c281ac7972643f1e2d190f2c943c
Groovy: 2.3.10
Ant: Apache Ant(TM) version 1.9.4 compiled on April 29 2014
JVM: 1.8.0_40 (Oracle Corporation 25.40-b25)
OS: Windows 7 6.1 amd64
答案 0 :(得分:0)
你可以移动taskdef
以便在ant任务中声明它吗?这样,每次触发时都应该丢弃类加载器。
我假设taskdef
是在根级别定义的,因此类型加载器会在内存中保存蚂蚁模型的整个时间。
另一种解决方法可能是将jar复制到packageAntModule1和packageAntModule2不同的临时位置。