2010-08-02 71 views
1

在Liferay ext build-parent.xml中有一個執行java的目標build-webxml。不幸的是,這個目標沒有完成。完成後ant java執行掛起

我調試的代碼和主要方法完成。但是直接在java之後的回聲仍然沒有被執行。它只是掛在年底

當我按Ctrl + C,然後它打印出

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

如果我添加菌種=「真」,那麼它完成,但我不喜歡這樣。 任何想法可能會導致這種情況,我該如何完成?

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

意味着Java類com.liferay.portal.tools.WebXMLBuilder是多線程的,其中一個線程仍在後臺運行。

spawn =「true」有效,因爲ANT jvm不會等待子進程完成。與CTRL-C類似,因爲您發送信號來終止進程。

+0

它不是多線程的。您可以在這裏看到源代碼: http://docs.liferay.com/portal/5.2/javadocs/portal-impl/com/liferay/portal/tools/WebXMLBuilder.java.html 它讀取和寫入一些文件磁盤。這可能是一個問題嗎? – Priit 2010-08-19 11:39:59

+0

可能。 我試圖追溯代碼,但看不到你正在使用的FileUtil類的實現。請參閱http://docs.liferay.com/portal/5.1/javadocs/portal-kernel/com/liferay/portal/kernel/util/FileUtil.java.html 單獨運行代碼時可以重現問題嗎沒有ANT? – 2010-08-19 22:49:31