JavaAnt在运行Jar后不会完成任务
我有一些junit测试(在Tester应用程序中),我想在服务上运行(service.jar并行运行)。一旦ant运行Service.jar,它就不会像预期的那样返回执行junit测试,而是坐在那里运行服务应用程序。我做错什么了吗?我的build.xml如下所示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
<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完成,因此线程被终止。”是的-但一般来说,当第一个实例停止时,您可能希望运行另一个参数稍有不同的实例-当然,这肯定取决于您的具体情况