我有一个使用父ant文件的项目
与此类似:
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="test">
<echo message="do foo"/>
RUN TEST FROM PARENT HERE
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
现在我想以这种方式覆盖父测试目标:
第一部分没问题,但我没有看到从父文件调用测试的方法
我希望目标也被命名为test,这样CI就可以简单地运行测试目标.
有没有办法在../build-common-portlet.xml中调用test?
Ale*_*yak 27
最简单的方法是使用对父测试的依赖.
为此,保持<project>名称属性与其文件名同步非常重要(确实,严格来说,这不是必需的,但可以极大地提高脚本的可读性和可维护性).
所以在build-common-portlet.xml中:
<project
name="build-common-portlet" <-- note the name
...
>
<target name="test">
<echo message="Calling parent test target"/>
...
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
那样你就可以这样做:
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="test"
depends="build-common-portlet.test" <-- note parent specification
>
<echo message="do foo"/>
RUN TEST FROM PARENT HERE
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
>>回复评论
如果你想在运行父测试之前做一些工作,只需创建一个新目标并在父测试之前对它进行依赖:
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="copy-jars">
<echo message="copying jars"/>
</target>
<target name="test"
depends="
copy-jars,
build-common-portlet.test
"
/>
</project>
Run Code Online (Sandbox Code Playgroud)
我找到了一个解决方案,它将运行我的命令,然后从父ant文件中调用test.覆盖父母的测试,然后在完成自己的"魔法"后,在父母的测试时调用.
所有其他父母的目标也可以被调用.
因此,对于不知道你的蚂蚁文件的人,她可以按照预期的方式调用ant测试.
<project name="some-portlet" basedir="." default="deploy">
<import file="../build-common-portlet.xml" />
<target name="test">
<echo message="do foo"/>
<ant antfile="../build-common-portlet.xml" target="test"/>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9305 次 |
| 最近记录: |