build.xml有一个 test 和一个 build 目标。 test 目标显然取决于 build 目标。
如何只运行测试目标,暂时跳过编译,而不修改build.xml文件?
我问,因为编译太长,并且由持续集成服务器保持最新;而且我正在追逐单元测试的问题。
答案 0 :(得分:29)
使用unless
属性。
<target name="test" unless="dont.run.tests">
如果您不想运行“test”,只需
ant -Ddont.run.tests = true
如果要运行测试,则应该是未定义的。 Ant只是检查它是否已定义。此外,还有一个if
属性可以进行相反的操作。
这两者都是article。
答案 1 :(得分:19)
不,如果不修改构建文件,就不能跳过它。
以下是我在解决此问题的项目中所做的工作。 对于每个公共目标,我将在其前面创建一个“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>
答案 2 :(得分:4)
就我个人而言,我发现Ant中的依赖项内容不仅仅是帮助。我通常设置两组目标 - 实际上做东西(没有依赖项),然后只具有依赖项的目标。通过这种方式,您可以轻松运行单个目标,并且您还可以轻松运行整个套件等。这符合我视图中的实用(而不是意识形态)用途。
答案 3 :(得分:2)
如果代码没有改变,编写良好的构建目标将不需要重建任何东西。因此,测试目标取决于它的事实应该在很大程度上无关紧要。如果你连续两次运行构建目标并且它第二次尝试重建某些东西,你可能想要调查它为什么这样做。
避免执行目标的简单方法是将目标的“除非”属性设置为某个属性的名称。如果您在运行Ant时在命令行上设置此属性,它将绕过该目标。
答案 4 :(得分:0)
暂时“删除”依赖项?“如果代码已构建,那么所有文件都应该可用,不是吗? - 哎呀,只是看到你无法改变档案,嗯,为什么你不先在当地经营同样的工作?