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



我正在迁移到gradle的过程中我们的一个模块说gradle-module。该模块有两个当前用ant构建的依赖项,例如ant-module-1ant-module-2

在我的gradle-module构建中。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的方法是什么。

任何关于如何解决我的两个蚂蚁依赖的其他建议也将是感激的。通过artifactory或nexus指向maven库不是一个选项,因为我们的ant构建不使用ivy,这实际上是我们转向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

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

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

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

最新更新