ANT- 如何为不同的环境递归构建 iOS 项目?

ANT- How to recursively build the iOS project for different environments?

我正在使用 ANT 脚本来自动化我的 iOS 构建和打包任务。根据我当前的构建脚本,我从命令行传递所需的环境,脚本将为该特定环境生成一个 IPA 文件。

基本上,它将运行以下目标- ValidateParameters, SetupBuildProperties, SetupXcodeSettings, clean, archive & package.

我必须为 Dev, QA & UAT 创建构建。因此,我必须 运行 脚本 3 次才能拥有 3 个不同的 IPA 文件。当我从命令行传递环境时,我将其存储在 ANT 属性 中,几乎所有目标都将使用它。因为 属性 是不可变的,所以这对我也没有帮助。

现在,有什么方法可以通过 运行 一次脚本生成所有 3 个构建? 不确定如何重置环境 属性 !!

请帮助我。

一个解决方案是创建一个名为 "buildForAllEnvs" 的目标,您可以在其中使用 antcall 为每个目标环境调用子项目构建并将其 属性 作为嵌套元素传递:

<target name="buildForAllEnvs">
    <antcall target="runBuild">
        <param name="targetEnv" value="Dev"/>
    </antcall>
    <antcall target="runBuild">
        <param name="targetEnv" value="QA"/>
    </antcall>
    <antcall target="runBuild">
        <param name="targetEnv" value="UAT"/>
    </antcall>
</target>

请注意,在 Ant 中有许多方法可以覆盖或重置属性。见 How to over-write the property in Ant?:

  1. 使用 Ant-Contrib 的 var 任务(需要将 Ant-Contrib 添加到您的类路径,这也引入了一堆有用的任务,用于使用 if 进行条件执行和使用 for 循环).
  2. 使用宏定义重用具有不同参数的相同构建。
  3. 使用项目 API 手动覆盖 属性(虽然很老套)。