簡體   English   中英

不能執行 <sequential> 螞蟻任務

[英]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的發行說明,但沒有得到任何幫助。 有人可以說明一下嗎?

首先,在Windows上,屬於另一個進程或線程的文件可以防止刪除文件並不少見。

其次,您的ANT目標中的順序任務的目的是什么? 文檔描述了以下任務:

順序任務是一個容器任務-它可以包含其他Apache Ant任務。 嵌套任務僅按順序執行。 Sequential的主要用途是支持並行任務中任務的子集的順序執行

在你的情況下,沒有使用並行 ...

為什么不嘗試刪除順序任務,看看是否能解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM