2011-06-07 14 views
10

Can Ant özellikleri, özellikler dosyasıyla ayarlandı, özellik dosyalarından diğer özellikleri mi çözümledi?Can Ant özellikleri diğer özellikleriyle karşılaştı?

<property name="prop1" value="in_test_xml1" /> 
<property name="prop2" value="${prop1}" /> 

ve prop2 "in_test_xml1" olur:

Örneğin, ben bunu yapabilirsiniz. Bu iyi. Bir girişini kullanırken

Ancak bu durumda

, özellikleri dosya:

prop1=sample_prop 
prop2=${prop1} 

prop2 ayarlanmamış için "sample_prop"

Yani diğer özelliklerinden çözme özellikleri yalnızca mülkiyet yaparken iş gibi görünüyor çözümleme karınca dosyasının kendisidir.

Bu mu beklenen veya eksik bir şey mi var?

cevap

16

Ant, dosya özelliği genişletmeyi destekliyor, Property görevi kılavuzundaki Özellik Dosyası bölümüne bakın. Tek özellikleri içinde

  • başka özellikler

İlk properties dosyasını bir yapı dosya içinde

  • dosyası içinde özellikleri dosya
  • biri dosyasını:

    Aşağıdaki örnek özelliklerinin çözülmesi alma gösterir :

    $ cat props1.properties 
    prop1=world 
    prop2=hello ${prop1} 
    

    İkinci özellikleri dosya:

    $ cat props2.properties 
    prop3=goodbye ${prop1} 
    

    Yapı dosyası:

    <project default="test"> 
        <property file="props1.properties"/> 
        <property file="props2.properties"/> 
        <property name="prop4" value="${prop3}, good luck"/> 
        <target name="test"> 
        <echo message="prop1 = ${prop1}"/> 
        <echo message="prop2 = ${prop2}"/> 
        <echo message="prop3 = ${prop3}"/> 
        <echo message="prop4 = ${prop4}"/> 
        </target> 
    </project> 
    

    Çıktı:

    $ ant 
    Buildfile: build.xml 
    
    test: 
        [echo] prop1 = world 
        [echo] prop2 = hello world 
        [echo] prop3 = goodbye world 
        [echo] prop4 = goodbye world, good luck 
    
    BUILD SUCCESSFUL 
    Total time: 0 seconds 
    

    sizin için çalışmıyor mülkiyet çözünürlüğü başka bir tür var mı? Yorumunuza ardından

    Düzenleme

    , şimdi benim yaptığım gibi, Ant yüklemek için bir özellik dosyası belirtmek için -propertyfile komut satırı seçeneğini kullanarak (ziyade Buildfile kendisi dosyayı belirterek anlıyoruz ile elde edilmiş).

    Bunu hızlı bir şekilde test ettim ve Ant 1.7.1'in bu komut satırı seçeneğini kullanarak yüklenen dosyalarda dosya genişletme özelliğini yapmadığını anladım. Ama Ant 1.8.2 yapar.

    Bu, Ant Bug 18732 dur. Ant sürümünüzü güncelleyerek çözebilmeniz gerekir.

  • +0

    i komut satırı üzerinden bir propertyfile gelen özelliklerini ithal ediyordu. Bu durumda, özelliklerin genişlediğini görmüyorum. – glutz

    +0

    Tamam, bu yüzden '-propertyfile' komut satırı seçeneğini kullanıyorsunuz. Cevabımı güncelledim. – sudocode

    3

    Bu görev için daha basit bir çözüm, Ant-contrib Görevlerinin kullanımı olacaktır: Propertycopy.manual itibaren

    :

    <property name="org" value="MyOrg" /> 
    <property name="org.MyOrg.DisplayName" value="My Organiziation" /> 
    <propertycopy name="displayName" from="org.${org}.DisplayName" /> 
    
    Sets displayName to "My Organiziation".