2015-09-30 82 views
0

我爲自動部署編寫了一個ant任務。根據輸入調用另一個任務的ANT任務

<target name="deployWMBComponent"> 
    <for list="${esb.ci.WMB.deployment.target.brokers}" param="brokername" delimiter=" "> 
     <sequential>    
      <for list="${esb.ci.WMB.deployment.target.egs}" param="egname" delimiter=" "> 
       <sequential>   
        <exec executable="cmd.exe" failonerror="true" logerror="true" append="true" vmlauncher="false" dir="${esb.ci.WMB.dp.home}"> 
         <arg value="/C" /> 
         <arg value="mqsiprofile.cmd &amp;&amp; mqsideployscript.bat" /> 
         <arg value="-n" /> 
         <arg value="${brokerConfigFilePath}\@{brokername}.broker" /> 
         <arg value="-e" /> 
         <arg value="@{egname}" /> 
         <arg value="-w" /> 
         <arg value="600" /> 
         <arg value="-a" /> 
         <arg value="${barLocalPath}" />               
        </exec> 
       </sequential> 
      </for> 
     </sequential> 
    </for>  
</target> 

所有屬性都在屬性文件中定義。如果TRUE上述腳本應該調用另一個ant任務,如果FALSE上述腳本應該直接執行,我將添加一個新的布爾參數Default_Propagation

+0

有人可以幫助上述要求?任何幫助將不勝感激! – user3171821

回答

0

首先我會回答你的問題: 你會想(假設你使用螞蟻> 1.8)添加ifunless這兩個目標,並有一個依賴於其他。

<target name="deployWMBComponent" if="${default.propogation}" depends="other-thing"> 

當你添加新的目標

<target name="other-thing" unless="${default.propogation}"> 

工作的示例:

<project name="foo" default="default-deploy"> 

    <target name="default-deploy" if="${default.propogation}" depends="other-deploy"> 
    <echo message="default" /> 
    </target> 

    <target name="other-deploy" unless="${default.propogation}"> 
    <echo message="other" /> 
    </target> 

</project> 

與調用它:ant -Ddefault.propogation=FALSEant -Ddefault.propogation=TRUE

ant docsifunless爲AC完整的破敗。 要思考的另一件事,現在你有默認和其他的事情。很可能會有第三個。那麼一個布爾值就不夠了。

話雖如此 - 你真的想做什麼?非默認傳播如何不同?它是不同的服務器名稱(屬性)? 爲什麼不在運行構建時只調用一個目標或另一個? 當你覺得你需要條件和螞蟻循環,這通常是一個非常好的跡象,你不應該做你在做什麼螞蟻。

+0

感謝您的輸入!要清楚的是,如果default.propagation屬性= true,我希望deployWMBComponent調用另一個目標,然後執行deployWMBComponent,如果default.propagation = false,我只想執行deployWMBComponent。希望你現在清楚。 – user3171821