gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 04:37:36 25 4
gpt4 key购买 nike

我正在迁移到 gradle 我们的一个模块说 分级模块 .该模块有两个依赖项,当前使用 ant 构建 Ant 模块1 Ant 模块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 依赖项的任何其他建议也将不胜感激。通过 artifactory 或 nexus 指向 maven 存储库不是一种选择,因为我们的 ant 构建不使用 ivy,这实际上是我们转向 gradle 的主要原因

最重要的是,在 gradle build 失败后,由 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在根级别定义,因此类加载器在 Ant 模型在内存中的整个时间都保存在内存中。

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

关于ant - Gradle 在完成 ant 调用后离开 java 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com