Java Ant在运行Jar之后不会完成任务



我得到了一些想要在服务上运行的junit测试(在Tester App中)(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不允许我(不能在非分叉模式下执行jar。请设置fork=‘true’。)

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

默认情况下,蚂蚁任务按顺序执行。当你需要并行运行一些东西时,你需要显式地使用任务并行——参见其文档中的示例——比如:

...
<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命令继续处理。

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

最新更新