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

时间:2016-11-25 17:06:35

标签: ios ant build-automation

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

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

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

现在,有没有办法只运行一次脚本就可以生成所有3个版本?不确定如何重置环境属性!!

请帮帮我。

1 个答案:

答案 0 :(得分:1)

一种解决方案是创建一个名为" 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和使用{{1}循环进行条件执行引入了许多有用的任务}})。
  2. 使用macrodef重用具有不同参数的相同构建。
  3. 使用项目API手动覆盖该属性(虽然hacky)。