当前位置: 首页 > 知识库问答 >
问题:

无法使用 Ant 执行任务

施旭东
2023-03-14

由于我将 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被重命名,我就开始使用< code >运行所有的测试

现在由于我将Java升级到JDK7u60,而不是等待所有测试完成,最后两个

构建失败

C:\MyProject\build.xml:579:无法删除文件 C:\MyProject\bin\myApp.jar

我想知道导致这种行为的JDK7u60发生了什么变化。我查看了JDK7u60的发行说明,但没有得到任何信息。有人能解释一下吗?


共有1个答案

岳嘉石
2023-03-14

首先,在windows上,属于另一个进程或线程的文件防止删除文件并不少见。

其次,在您的ant目标中顺序任务的确切目的是什么?留档对任务的描述如下:

顺序是一个容器任务 - 它可以包含其他 Apache Ant 任务。嵌套任务只是按顺序执行。顺序的主要用途是支持并行任务中任务子集的顺序执行

在您的情况下,没有使用并行...

您为什么不尝试删除顺序任务,看看是否可以解决问题。

 类似资料:
  • 我有三个应用程序作为源、处理器和接收器。Source能够将消息传递给处理器,但处理器无法将消息发送到接收器并抛出异常。尝试在本地使用Spring Cloud stream执行任务,所以我在我的接收器pom文件中有spring-cloud d-confiyer-local,并且主类也用@EnableTaskLauncher注释。如果有人可以提供samole,那也会有所帮助。 加工机 源错误 请有人调

  • 我有一个POM文件(由Eclipse执行),我想在阶段执行一个ANT任务。基于m2e文档,在如何解决Spring Data Maven Builds的“生命周期配置未涵盖的插件执行”中,Maven:在打包期间执行antrun任务,以及Maven编译器插件声明的位置:in 我从阅读中了解到,我要求告诉Maven以下内容:首先要求Maven的Eclipse插件(m2e)允许maven-antrun-p

  • 我正在尝试使用enuncicate v1.26.2 ant任务创建java客户端库。问题是,每次我尝试这样做时,我都会收到以下警告信息: 我已经检查了java-客户端发音jar是否在类路径上,并且发音甚至说它已经在输出中找到了它。 所以我不确定到底该怎么做。我尝试在谷歌上搜索,发现SO只有几个问题需要阐明,似乎没有一个回答我的问题。这是我的蚂蚁脚本,其中包含相关行: 注意:docs export被

  • 16.1.使用 Ant 任务和 Ant 类型的构建 在构建脚本中, Ant 属性是由 Gradle提供的. 这是一个用于参考的 AntBuilder 实例. AntBuilder 用于从构建脚本访问 Ant 任务, 类型和属性. 下面的例子解释了从 Ant 的 build.xml 格式到 Grooy 的映射. 你可以通过调用 AntBuilder 实例的方法执行 Ant 任务. 你可以使用任务名称

  • 我试图在一个Android Studio项目中为一个lib模块'lib1'执行一个gradle任务。它应该使用命令'Gradlew AssembleDebug'或'Gradlew Assemble'运行,但它从未运行。 我尝试了一个更简单的任务,没有依赖性,它似乎也从来没有运行过。

  • 在我的maven构建中,我必须按照下面提到的特定顺序执行以下步骤: exec-maven-plugin maven-antrun-plugin exec-maven-plugin maven-antrun-plugin maven-remote-resources-plugin,jaxb2-maven-plugin maven-javadoc-plugin exec-maven-plugin 在p