当前位置: 首页 > 知识库问答 >
问题:

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

萧展鹏
2023-03-14
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。

提前感谢您的投入

更新以添加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个答案

邵畅
2023-03-14

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

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

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

 类似资料:
  • 问题内容: 基本上,一旦用户在我的应用程序中离开了网页,我就需要使用AJAX调用PHP脚本,这会将在网页上花费的时间插入数据库中,然后离开该页面。 重要的是要等待AJAX​​请求完成,因为用户无法访问我的应用程序中的网页,除非用户在前一页上花费了一定的时间(例如两分钟)。 这是我的jQuery代码: 我应该如何更改它,以便它将在离开网页之前等待AJAX​​请求结束? 编辑: 或者,最好每隔一分钟左

  • 问题内容: 由于某种原因,我完成后没有被调用。 我的班级干事: 我的onPostExecute(): 一切正常,我成功完成并返回一个布尔值,但随后就结束了。 谢谢 问题答案: 您是否在UI线程上创建了AsyncTask?还要在onPostExecute()方法上添加一个@Override注释,以确保正确声明了它。

  • 我有一个会话列表,我必须调用一个网络服务来设置每个会话的一些属性。 我尝试使用异步进程调用webservice,并使用completablefuture,以便在完成所有操作后,可以将它们全部保存在db中。 我该怎么做呢?到目前为止,我的代码如下,它不起作用。 编辑: 我提出了这个解决方案,不确定这是否是正确的方法。 我正在使用join来确保它在保存会话之前等待响应返回

  • 当我键入 在 CentOS 7 终端中调试以使用 gradle 启动此示例Spring启动应用程序时,我收到以下错误。 我搜索了这个错误,并阅读了其他类似但不重复的SO帖子。例如,这是在CentOS 7和web应用程序中的eclipse中。这不是android应用程序等。此外,其他帖子中给出的命令也没有解决这个问题。 重现此问题所需的所有代码都在上面的github链接中,诊断问题的所有日志都在下面

  • 问题内容: 我试图实现的基本上是“重复完成渲染”处理程序。我能够检测到何时完成,但是我不知道如何从中触发功能。 检查小提琴:http : //jsfiddle.net/paulocoelho/BsMqq/3/ JS 的HTML 答 :从finishmove的工作提琴:http : //jsfiddle.net/paulocoelho/BsMqq/4/ 问题答案: 请注意,我没有使用,而是将其包装在

  • Gradle 提供了对 Ant 的优秀集成。可以在你的 Gradle 构建中,使用单独的 Ant 任务或整个 Ant 构建。事实上,你会发现在 Gradle 中使用 Ant 任务比使用 Ant 的 XML 格式更容易也更强大。你甚至可以只把 Gradle 当作一个强大的 Ant 任务脚本的工具。 Ant 可以分为两层。第一层是 Ant 的语言。它提供了用于 build.xml,处理的目标,特殊的构