build.xml 有一个测试和一个构建目标。测试目标显然取决于构建目标。
如何只运行测试目标,暂时跳过编译,而不修改 build.xml 文件?
我问是因为编译太长,并且由持续集成服务器保持最新;我正在追查单元测试的问题。
使用unless
属性。
<target name="test" unless="dont.run.tests">
如果您不想运行“测试”,只需
蚂蚁 -Ddont.run.tests=true
如果您希望测试运行,它应该是未定义的。Ant 只是检查它是否已被定义。此外,还有一个if
属性可以相反。
这是一篇关于两者的文章。
不,您不能在不修改构建文件的情况下跳过它。
这是我在项目中为解决此问题所做的工作。对于每个公共目标,我将创建一个在其前面带有“do-”的私有目标。私有目标没有依赖关系,公共目标具有“do-”目标作为依赖关系。
例如:
<target name="compile" depends="init, do-compile" description="Compiles all of the source code" />
<target name="do-compile">
<javac destdir="${classes.dir}" debug="true" encoding="ISO-8859-1">
<src refid="src.path" />
<include name="*.java" />
<classpath refid="external.libraries.classpath" />
</javac>
</target>
就我个人而言,我发现 Ant 中的依赖项不仅仅是帮助。我通常设置两组目标 - 真正做事情的目标(没有依赖关系),然后是只有依赖关系的目标。这样,您可以轻松运行单个目标,还可以轻松运行整个套件等。在我看来,这符合实际(而不是意识形态)用途。
如果代码没有改变,一个写得很好的构建目标不需要重新构建任何东西。因此,测试目标依赖于它这一事实在很大程度上应该是无关紧要的。如果您连续两次运行构建目标并且它第二次尝试重建某些东西,您可能需要调查它为什么这样做。
避免执行目标的简单方法是将目标的“除非”属性设置为某个属性的名称。如果您在运行 Ant 时在命令行上设置此属性,它将绕过该目标。
只是暂时“删除”依赖关系?`如果代码已经构建,你的所有文件都应该可用,不是吗?- 哎呀,刚刚看到您无法更改文件,嗯,您为什么不先在本地运行相同的作业?