在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
我仍然没有解决方案
答案 0 :(得分:0)
建议java类 com.liferay.portal.tools.WebXMLBuilder 是多线程的,其中一个线程仍然在后台运行。
spawn =“true”有效,因为ANT jvm不会等待子进程完成。类似地,CTRL-C可以正常工作,因为你发送了一个信号来杀死进程。
答案 1 :(得分:0)
当Apache Ant例如通过使用或任务来分配新进程时,它还将启动从标准输入读取的新线程,并将已读取的所有内容发送到该进程。