Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaAnt在运行Jar后不会完成任务_Java_Ant_Junit4 - Fatal编程技术网

JavaAnt在运行Jar后不会完成任务

JavaAnt在运行Jar后不会完成任务,java,ant,junit4,Java,Ant,Junit4,我有一些junit测试(在Tester应用程序中),我想在服务上运行(service.jar并行运行)。一旦ant运行Service.jar,它就不会像预期的那样返回执行junit测试,而是坐在那里运行服务应用程序。我做错什么了吗?我的build.xml如下所示 <target name="compile" depends="clean"> <javac srcdir="${srcdir}" destdir="${testdir}" verbose="${f

我有一些junit测试(在Tester应用程序中),我想在服务上运行(service.jar并行运行)。一旦ant运行Service.jar,它就不会像预期的那样返回执行junit测试,而是坐在那里运行服务应用程序。我做错什么了吗?我的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任务是按顺序执行的。当您需要并行运行某些东西时,您需要显式地使用task—请参阅其文档中的示例—类似于:

...
<parallel>
  <java jar="Service.jar" fork="yes"/>
  <sequential>
    <sleep seconds="30"/>
    <junit fork="true" forkmode="once" ... >
    <java jar="ServiceStopper.jar" fork="yes"/>
  </sequential>
</parallel>
...
。。。
...
或者,您可以对任务使用
spawn
属性。这会导致您的服务在一个单独的进程中生成,并使用下一个ant命令继续处理


关于非分叉jar执行-如果您指定
classpath
classname
属性,您可以避免分叉。

因为我必须启动一个java作业,该作业将与ant并行运行,spawn=“true”起作用,但我不希望该作业比ant进程活得长。有什么建议吗?看来任务可以解决我的问题了。无论如何谢谢Hanks petr,但是我需要一个servicestopper吗?正如我读到的,“作为守护进程线程,它们不会阻止Ant完成,因此线程被终止。”是的-但一般来说,当第一个实例停止时,您可能希望运行另一个参数稍有不同的实例-当然,这肯定取决于您的具体情况