完成ant调用后,Gradle离开java进程

时间:2015-09-02 03:30:56

标签: ant gradle

我正在迁移到我们的模块中的一个模块说 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

1 个答案:

答案 0 :(得分:0)

你可以移动taskdef以便在ant任务中声明它吗?这样,每次触发时都应该丢弃类加载器。

我假设taskdef是在根级别定义的,因此类型加载器会在内存中保存蚂蚁模型的整个时间。

另一种解决方法可能是将jar复制到packageAntModule1和packageAntModule2不同的临时位置。