是否有可能从字面上覆盖目标或以某种方式模拟它?
所以,当我调用
<target perform-after="release">
<do-something />
</target>
它会像这样运行:
<target name="release">
<antcall target="release" /> <!-- call previous version, not recursion -->
<do-something />
</target>
我认为它有一个意义,我将描述在Android的例子:
我们在SDK文件夹({$SDK}/tools/ant/*.xml
)中有每个build.xml
的.xml
模板,这些文件包含在每个项目生成的build.xml
中。只有-pre-compile
、-pre-build
和-post-compile
目标是空的,并且很容易被覆盖。但是没有空的-post-release
目标,例如。Google建议在生成的build.xml
评论中复制粘贴一个目标到我自己的build.xml
,然后对其进行调优。但我认为这是不好的,因为如果谷歌将改变这个目标内的模板,我永远不会知道我使用过时的版本。
请参阅导入任务的"目标重写"部分或包含任务的"目标重写"部分。简而言之,给common build.xml一个项目名,比如"common",然后使用"common"。在antcall中释放"
我要注意的是antcall并不完全相同,因为它在运行时启动一个新项目,这意味着目标设置的变量稍后将不可见。我在这台机器上没有可用的Ant来测试,但是您可以尝试这样做来避免antcall:
<target name="release" depends="common.release, -post-release"/>