运行 Jar 后 Java Ant 无法完成任务

标签 java ant junit4

我有一些 junit 测试(在测试器应用程序中),我想在服务上运行(Service.jar 并行运行)。一旦 ant 运行 Service.jar,它就不会按照预期返回执行 junit 测试,而只是坐在那里运行 Service 应用程序。难道我做错了什么?我的 build.xml 如下所示..

<target name="compile" depends="clean">
    <javac srcdir="${srcdir}" destdir="${testdir}" 
     verbose="${full-compile}">
        <classpath refid="classpath.test"/>
    </javac>
</target>
<target name="test" depends="compile,run">
    <junit fork="no" haltonfailure="yes">
        <classpath refid="classpath.test" />
        <formatter type="brief" usefile="false" />
        <test name="xyz.Tester.Test1" outfile="result" >
            <formatter type="plain"/>
            <formatter type="xml"/>
        </test>
    </junit>
</target>
<target name="run">
    <java jar="Service.jar" fork="yes">
    </java>
</target>

此外,我想知道是否有一种方法可以在 Ant 中运行 Service.jar(fork="no"),如果可能的话,因为 ant 不允许我(无法在非 fork 中执行 jar模式。请设置 fork='true'。)

如有任何帮助,我们将不胜感激。谢谢

最佳答案

默认情况下,ant 任务是按顺序执行的。当您需要并行运行某些内容时,您需要显式使用任务 parallel - 请参阅其文档中的示例 - 类似于:

...
<parallel>
  <java jar="Service.jar" fork="yes"/>
  <sequential>
    <sleep seconds="30"/>
    <junit fork="true" forkmode="once" ... >
    <java jar="ServiceStopper.jar" fork="yes"/>
  </sequential>
</parallel>
...

或者,您可以在 java 上使用 spawn 属性任务。它会导致您的服务在单独的进程中生成,并使用下一个 ant 命令继续处理。

关于非 fork 的 jar 执行 - 如果指定 classpathclassname 属性,则可以避免 fork 。

关于运行 Jar 后 Java Ant 无法完成任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20059286/

相关文章:

java - 是否可以创建一个包含 arraylist 对象的常规数组?

java - 文件保存到公共(public)存储目录的问题

android - 未找到引用 android.target.classpath

通过 Ant 任务使用来自 J2SE 类的 {@inheritDoc} 的 Javadoc

java - 无法为 ListPreference android 首选项屏幕设置字符串默认值

java - JAXB : How to add attributes to an inner element

java - 学习 Ant 的最佳资源是什么?

hibernate :java. lang.NoSuchMethodError :javax/validation/spi/ConfigurationState. getParameterNameProvider()Ljavax/validation/ParameterNameProvider

java - 如何让 JUnit 打印断言结果

java - 通过检查 junit 报告导致 ant 构建失败?