【问题标题】:ant java execution hangs after completeant java执行完成后挂起
【发布时间】:2010-08-02 08:18:27
【问题描述】:

在 Liferay ext build-parent.xml 中有一个执行 java 的目标 build-webxml。不幸的是,这个目标由于某种原因没有完成。

我调试了代码,main 方法完成了。但是仍然没有执行java之后直接的echo。它只是挂在最后

当我 Ctrl+c 然后打印出来

 [java] Java Result: 1
 [echo] web.xml files merged

如果我添加 spawn="true" 然后它完成,但我不喜欢这样。 有什么想法可能导致此问题,我该如何完成?

Apache Ant 版本 1.8.1 和 JVM 版本 1.5.0_17-b04

目标如下:

<target name="build-webxml">
    <java
        classname="com.liferay.portal.tools.WebXMLBuilder"
        classpathref="project.classpath"
        fork="true"
        newenvironment="true" spawn="false" resultproperty="web.xml.build.success"
    >
        <jvmarg value="-Dexternal-properties=com/liferay/portal/tools/dependencies/portal-tools.properties" />
        <!--  -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n -->
        <arg value="tmp/WEB-INF/web.xml.original" />
        <arg value="docroot/WEB-INF/web.xml" />
        <arg value="tmp/WEB-INF/web.xml" />
    </java>
    <echo message="web.xml files merged"/>
</target>

我发现我遇到了与此处所述相同的问题:http://www.liferay.com/community/forums/-/message_boards/message/4931689

我还是没有办法

【问题讨论】:

  • 我也面临同样的问题。您是如何解决这个问题的?

标签: java ant liferay


【解决方案1】:

建议java类com.liferay.portal.tools.WebXMLBuilder是多线程的,其中一个线程仍在后台运行。

spawn="true" 有效,因为 ANT jvm 不会等待子进程完成。同样,CTRL-C 有效,因为您正在发送信号以终止进程。

【讨论】:

【解决方案2】:

当 Apache Ant 派生一个新进程时,例如使用 、 或 任务,它还将启动一个新线程,从标准输入读取并将它读取的所有内容发送到该进程。

请参考http://ant.apache.org/faq.html#input-makes-exec-hang

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 2019-10-08
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多