2016-11-25 76 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手動覆蓋屬性(儘管如此)。