我得到了一些想要在服务上运行的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执行,如果指定classpath
和classname
属性,则可以避免分叉。