ant java执行完成后挂起

时间:2010-08-02 08:18:28

标签: java ant liferay

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

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

当我按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

我仍然没有解决方案

2 个答案:

答案 0 :(得分:0)

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

spawn =“true”有效,因为ANT jvm不会等待子进程完成。类似地,CTRL-C可以正常工作,因为你发送了一个信号来杀死进程。

答案 1 :(得分:0)

当Apache Ant例如通过使用或任务来分配新进程时,它还将启动从标准输入读取的新线程,并将已读取的所有内容发送到该进程。

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