17

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

所以,当我打电话

<target perform-after="release">
     <do-something />
</target>

它会像这样运行:

<target name="release">
     <antcall target="release" /> <!-- call previous version, not recursion -->
     <do-something /> 
</target>

我认为它有一个含义,我将在Android示例中描述:

我们在 SDK 文件夹 ( ).xml中的每个模板都有一个模板,这些文件包含在为每个项目生成的每个文件中。只有,和目标是空的且易于覆盖。但是,例如,没有空目标。Google 建议在生成的评论中将目标复制粘贴到我自己的位置,然后对其进行调整。但我认为这不行,因为如果 Google 会在模板内更改此目标中的某些内容,我将永远不会知道我使用的是过时的版本。build.xml{$SDK}/tools/ant/*.xmlbuild.xml-pre-compile-pre-build-post-compile-post-releasebuild.xmlbuild.xml

4

1 回答 1

29

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

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

<target name="release" depends="common.release, -post-release"/>
于 2011-08-08T14:58:41.207 回答