繁体   English   中英

目标覆盖Ant

[英]Target overriding in Ant

是否有可能从字面上覆盖目标或以某种方式模拟它?

所以,当我打电话的时候

<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然后进行调整。 但我认为这不好,因为如果Google会在模板中更改此目标中的内容,我将永远不会知道我使用的是过时的版本。

请参阅导入任务的“目标覆盖”部分或包含任务的“目标重写”部分。 简而言之,给公共build.xml一个项目名称,如“common”,然后在antcall中使用“common.release”。

我会注意到antcall并不完全相同,因为它在运行时启动一个新项目,这意味着目标设置的变量以后将不可见。 我没有在这台机器上测试Ant,但是你可以尝试这样的东西来避免使用antcall:

<target name="release" depends="common.release, -post-release"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM