2016-11-25 32 views
2

我正在使用ANT脚本来自动执行我的iOS构建和打包任务。根据我当前的构建脚本,我正从命令行传递所需的环境,并且该脚本将为该特定环境生成一个IPA文件。ANT如何递归构建适用于不同环境的iOS项目?

基本上,它会运行以下targets- ValidateParameters, SetupBuildProperties, SetupXcodeSettings, clean, archive & package.

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

现在,有没有什么办法可以通过只运行一次脚本来生成所有3个版本?不知道如何重置环境属性!

请帮帮我。

回答

1

一种解决方案是创建一个名为类似,你调用使用antcall为每个目标环境并通过其属性作为嵌套元素的一个子项目构建“buildForAllEnvs”目标:

<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任务(需要添加蚂蚁的Contrib到类路径中,其中使用if和使用for循环还引入了大量有用的任务为条件执行)。
  2. 使用宏定义复用具有不同参数的相同构建。
  3. 使用项目API手动覆盖属性(尽管如此)。
相关问题