[英]Cannot execute <sequential> task with Ant
由於我將Java從JDK7u55更新為JDK7u60,因此在運行構建時遇到了問題。 我在Windows Server 2003 Standard Edition上使用Ant 1.6.5。 以下是導致問題的Ant任務。
<!-- RUN JUNIT TASK -->
<target name="run_junit" description="Runs all JUnit tests in another JVM">
<sequential>
<move file="${MyProject}\bin\myApp.jar" tofile="${MyProject}\bin\myApp_original.jar"/>
<move file="${MyProject}\bin\myApp_test.jar" tofile="${MyProject}\bin\myApp.jar"/>
<exec executable="WinTail" spawn="true">
<arg value="${MyProject}\junit.log"/>
</exec>
<java classname="myProject.test.AllTests"
maxmemory="256m"
fork="true"
output="${MyProject}\junit.log"
dir="${MyProject}\bin"
append="true">
<jvmarg value="-Djdk.lang.Process.allowAmbigousCommands=true"/>
<arg value="${MyProject}\bin"/>
<classpath>
<fileset dir="${MyProject}\bin">
<include name="myApp.jar"/>
</fileset>
<pathelement path="${MyProject}\bin"/>
</classpath>
</java>
<move file="${MyProject}\bin\myApp.jar" tofile="${MyProject}\bin\myApp_test.jar"/>
<move file="${MyProject}\bin\myApp_original.jar" tofile="${MyProject}\bin\myApp.jar"/>
</sequential>
</target>
重命名兩個JAR之后,我開始使用<java>
任務運行所有測試。 AllTests.java使用單獨的線程來運行每個測試。 有些測試需要更長的時間才能完成,而有些卻沒有響應。 我曾經使用ProcessExplorer手動殺死它們。 完成后,它會用來執行下一個命令,該命令將JAR重命名為其原始名稱。 當我使用JDK7u55時,它可以正常工作。
現在,由於我將Java升級到JDK7u60,所以沒有等待所有測試完成,而是嘗試了最后兩個<move>
命令。 這會導致構建失敗,因為<move>
繼續進行,因為測試類正在使用基礎JAR文件。 我得到以下錯誤:
建立失敗
C:\\ MyProject \\ build.xml:579:無法刪除文件C:\\ MyProject \\ bin \\ myApp.jar
我想知道導致此行為的JDK7u60中發生了什么變化。 我檢查了JDK7u60的發行說明,但沒有得到任何幫助。 有人可以說明一下嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.