重写子文件中的目标时如何调用ant目标
我有一个使用父ant文件的项目 与此类似:重写子文件中的目标时如何调用ant目标,ant,target,Ant,Target,我有一个使用父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 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>
在此处从父级运行测试
现在,我想用以下方式覆盖父测试目标:
- 需要复制一些罐子吗
- 从父文件运行测试目标
有没有办法在../build-common-portlet.xml中调用test?最简单的方法是使用对父级测试的依赖关系 为此,保持
名称属性与其文件名同步非常重要(好的,严格来说,这不是必需的,但可以极大地提高脚本的可读性和可维护性)
因此,在build-common-portlet.xml中:
<project
name="build-common-portlet" <-- note the name
...
>
<target name="test">
<echo message="Calling parent test target"/>
...
</target>
</project>
回复评论
如果您想在运行父级测试之前做一些工作,只需创建一个新目标,并在父级测试之前对其进行依赖:
<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>
我找到了一个解决方案,它将运行我的命令,然后从父ant文件调用test。
重写父级测试,然后在完成自己的“魔术”后在父级测试时调用
也可以调用所有其他父对象的目标
因此,对于不知道您的ant文件的人,她可以按预期的方式调用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>
这不会让父测试首先运行吗?在我的情况下,这将失败,因为复制jar不会发生。此外,我不想修改父文件,因为此项目包含的父文件不止一个。(我有一个解决方案,至少在下面的回答中看起来是这样的)@nheid。我提供了一个示例来回答您的评论。与显式调用父目标相比,我更喜欢这种方法!为我工作!很好,我正在寻找一个解决方案,当我不能控制导入的文件,当它没有设置。
<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>