在同一个VM上运行多个ant任务
我正在使用ant运行单元测试在同一个VM上运行多个ant任务,ant,junit,Ant,Junit,我正在使用ant运行单元测试 <target name="test" depends="tomcatDeploy" description="Build and run tests"> <ant dir="${aDir}" target="test"/> <ant dir="${bDir}" target="test"/> <ant dir="${cDir}" target="test"/> <ant dir=
<target name="test" depends="tomcatDeploy" description="Build and run tests">
<ant dir="${aDir}" target="test"/>
<ant dir="${bDir}" target="test"/>
<ant dir="${cDir}" target="test"/>
<ant dir="${dDir}/ExtFramework" target="test"/>
</target>
我想在同一个虚拟机上运行它们,否则我在创建jvm时会有很多开销&重新创建静态等等
有办法做到这一点吗 任务本身不会创建新的VM。您的测试是否正在创建一个新的虚拟机?我认为这项任务就是您正在寻找的。假设所有子目录都有一个公共父目录,则可以执行以下操作:
<target name="test" depends="tomcatDeploy" description="Build and run tests">
<subant target="test">
<fileset dir="${parent}" includes="**/build.xml"/>
</subant>
</target>
编辑
你是如何运行测试的?如果您正在使用junit任务,是否有
fork=“yes”
?如果是这样,将在新VM中运行测试。将其更改为fork=“no”
以在同一个VM中运行测试。尝试最小化问题:如果通过JUnit手动启动测试,是否会创建新VM?或者该问题只会与ant一起出现?可能是JUnit或您的测试创建了一个新的VM和泄漏内存。
<parallel threadCount='4'>
<ant target='TargetThatConsumesLotsOfCPUTimeAndMemory'>
<param name='file' value='one.txt'/>
</ant>
<ant target='TargetThatConsumesLotsOfCPUTimeAndMemory'>
<param name='file' value='two.txt'/>
</ant>
<ant target='TargetThatConsumesLotsOfCPUTimeAndMemory'>
<param name='file' value='three.txt'/>
</ant>
<!-- repeated about 40 times -->
</parallel>
这不是和yossale的方法一样的效果吗?因为它与手册中的文本相同:“为所有定义的子构建调用给定的目标。这是用于批量项目执行的ant的扩展。如果该任务调用它所属的同一构建文件,则不得在目标之外使用。”()和“在提供的构建文件上运行Ant。这可用于构建子项目。如果此任务调用它所属的同一生成文件,则不能在目标之外使用它。“()编辑回答以回应评论。Jason,subant在封面下使用ant,所以你对效率的评论毫无意义。我真的搞砸了这一点;antcall重新解析构建文件并运行所有相关目标,使其比subant慢得多。真是罪过。我想他想在一个VM中完成这项工作?谢谢,但我需要在一个V中运行所有这些M.我使用“junit”任务(~new ant feature)完成了这项工作,但随后我遇到了另一个问题——本地目录是由jvm设置的,如果所有人都使用相同的目录,那么类路径就有问题