2012-05-18 37 views
0

大家好,這些都是我的file.properties文件的內容,我想打印那些有真正的價值和他們的安裝位置的平臺,它是肯定的,具有真正價值的平臺將只有安裝程序: platform.win-x86=true platform.win-x86-client=false platform.win-x64=true platform.linux-x86=false installer-zip.win-x86=E:\\abc\\abc.jar installer-zip.win-x64=E:\\def\\def.jar如何讀取螞蟻的屬性文件

嘗試過很多事情,但也無法與我使用過的東西之一就是爲

<propertyselector property="platform.list" 
         delim`enter code here`iter="," 
         match="platform\.([^\.]*)" 
         select="\1" 
         casesensitive="false" /> 


    <propertyselector property="zip.list" 
         delimiter="," 
         match="installer-zip\.([^\.]*)" 
         select="\1" 
         casesensitive="false" /> 


    <target name="print.name" > 
     <propertycopy name="platform.name" from="platform.${platform.id}" /> 
     <if> <equals arg1="${platform.name}" arg2="true" /> 
      <then> 
       <echo>PlatForm.Id====>${platform.id}</echo> 
       <echo message="${platform.name}" /> 
       <echo file="platform.properties" append="yes">${new.platform-name}=Yes${line.separator}</echo> 
      </then> 

     </if> 
    </target> 


    <target name="print.zipname" > 
     <propertycopy name="zip.name" from="installer-zip.${zip.id}" /> 
     <echo>zip.Id====>${zip.id}</echo> 
     <echo message="${zip.name}" /> 

    </target> 


    <target name="first"> 
     <foreach list="${platform.list}" 
       delimiter="," 
       target="print.name" 
       param="platform.id" /> 

     <foreach list="${zip.list}" 
       delimiter="," 
       target="print.zipname" 
       param="zip.id" /> 
    </target> 

雖然打印值全真平臺,但安裝程序只會打印1,然後breaks..can你幫助,請

回答

3

這不是直接回答你的問題,而是你展示如何你可以使用相同的屬性可以在您的構建中執行條件目標。

<project default="build"> 

    <property file="platform.properties"/> 

    <condition property="build.win-x86"> 
     <and> 
      <istrue value="${platform.win-x86}"/> 
      <isset property="installer-zip.win-x86"/> 
     </and> 
    </condition> 
    <condition property="build.win-x86-client"> 
     <and> 
      <istrue value="${platform.win-x86-client}"/> 
      <isset property="installer-zip.win-x86-client"/> 
     </and> 
    </condition> 
    <condition property="build.win-x64"> 
     <and> 
      <istrue value="${platform.win-x64}"/> 
      <isset property="installer-zip.win-x64"/> 
     </and> 
    </condition> 
    <condition property="build.linux-x86"> 
     <and> 
      <istrue value="${platform.linux-x86}"/> 
      <isset property="installer-zip.linux-x86"/> 
     </and> 
    </condition> 


    <target name="build" depends="win-x86, win-x86-client, win-x64, linux-x86"/> 

    <target name="win-x86" depends="win-x86-build, win-x86-installer"/> 
    <target name="win-x86-client" depends="win-x86-client-build, win-x86-client-installer"/> 
    <target name="win-x64" depends="win-x64-build, win-x64-installer"/> 
    <target name="linux-x86" depends="linux-x86-build, linux-x86-installer"/> 


    <target name="win-x86-build" if="${build.win-x86}"> 
     <echo message="executing win-x86-build"/> 
    </target> 
    <target name="win-x86-installer" if="${build.win-x86}"> 
     <echo message="installer: ${installer-zip.win-x86}"/> 
    </target> 


    <target name="win-x86-client-build" if="${build.win-x86-client}"> 
     <echo message="executing win-x86-client-build"/> 
    </target> 
    <target name="win-x86-client-installer" if="${build.win-x86-client}"> 
     <echo message="installer: ${installer-zip.win-x86-client}"/> 
    </target> 


    <target name="win-x64-build" if="${build.win-x64}"> 
     <echo message="executing win-x64-build"/> 
    </target> 
    <target name="win-x64-installer" if="${build.win-x64}"> 
     <echo message="installer: ${installer-zip.win-x64}"/> 
    </target> 

    <target name="linux-x86-build" if="${build.linux-x86}"> 
     <echo message="executing linux-x86-build"/> 
    </target> 
    <target name="linux-x86-installer" if="${build.linux-x86}"> 
     <echo message="installer: ${installer-zip.linux-x86}"/> 
    </target> 

</project> 

基於屬性文件的輸出如下。請注意,只有win-x86和win-64目標被實際執行。其餘的被跳過,因爲所需要的條件並不滿意:

win-x86-build: 
    [echo] executing win-x86-build 

win-x86-installer: 
    [echo] installer: E:\abc\abc.jar 

win-x86: 

win-x86-client-build: 

win-x86-client-installer: 

win-x86-client: 

win-x64-build: 
    [echo] executing win-x64-build 

win-x64-installer: 
    [echo] installer: E:\def\def.jar 

win-x64: 

linux-x86-build: 

linux-x86-installer: 

linux-x86: 

build: 

BUILD SUCCESSFUL 
Total time: 0 seconds 
+0

+1提供不需要螞蟻的contrib –

+0

感謝這一個有效的解決方案......但有另外一個也是它採用螞蟻contril所以代碼少,但是這個也可以正常工作 – user1390517

+0

毫無疑問,Ant-contrib的「if」任務很有用。但是,我會說,每當你發現自己想要達成目標時,首先嚐試查看是否可以找到一個聲明性解決方案。這是Ant如何設計的。 – sudocode