2011-06-16 14 views
11

Ant 1.8.1 kullanıyorum. Benim Ant komut dosyasında (doğru/yanlış olarak)Ant: Komut satırında iletilen virgülle ayrılmış bir listeden özellikleri nasıl ayarlayabilirim?

-DenableProperties=abc,def,ghi,jkl 

nasıl bireysel özelliklerini ayarlarım ... komut satırında bir tartışmaya geçti ise? o özelliği "erişmeye çalışması halinde ise yukarıdaki örnekte, ben Ant bir özellik "$ {abc}" erişmesini istemezsiniz

<property name="abc" value="???" /> 
<property name="def" value="???" /> 

Not Bu doğru olarak ayarlanır $ {mno} "Bu özellik yanlıştır, ya da en azından doğrudan başka bir değer olurdu.

sayesinde - Dave

cevap

13

çekirdek Ant bunu yapmanın bir yolunu düşünemiyorum. Karınca önleyici For task ile yapabilirsiniz.

<project default="test"> 

    <taskdef resource="net/sf/antcontrib/antlib.xml"> 
    <classpath> 
     <pathelement location="C:/lib/ant-contrib/ant-contrib-1.0b3.jar"/> 
    </classpath> 
    </taskdef> 

    <target name="test"> 
    <for list="${enableProperties}" param="prop"> 
     <sequential> 
     <property name="@{prop}" value="true"/> 
     </sequential> 
    </for> 
    <for list="${enableProperties}" param="prop"> 
     <sequential> 
     <echo message="@{prop}=${@{prop}}"/> 
     </sequential> 
    </for> 
    </target> 

</project> 

Çıktı:

$ ant -DenableProperties=abc,def,ghi,jkl 
Buildfile: build.xml 

test: 
    [echo] abc=true 
    [echo] def=true 
    [echo] ghi=true 
    [echo] jkl=true 

BUILD SUCCESSFUL 
Total time: 0 seconds 
1

Nasıl mülkiyet $ enableproperties bir öğe sahte ya da gerçek olarak ayarlanmalıdır olduğunda karar vermek?
Bazı kriterler kaçırdığım .. Sorunuzun Benim anlayış
böyle bir şey deneyebilirsiniz, benim çözüm Ant plugin Flaka

karınca -f demo.xml -Denableproperties = abC# t, def # t, GSS ile başlayan dayanmaktadır , jkl # t, mno

diğerleri yanlış

<project name="demo" xmlns:fl="antlib:it.haefelinger.flaka"> 

    <fl:for var="p" in="split('${enableproperties}', ',')"> 
     <fl:let>#{split(p, '#')[0]} := #{split(p, '#')[1] == 't' ? 'true' : 'false'}</fl:let> 
    </fl:for> 

    <echo> 
$${abc} = ${abc} 
$${def} = ${def} 
$${ghi} = ${ghi} 
$${jkl} = ${jkl} 
$${mno} = ${mno} 
    </echo> 

</project> 

çıkışına kurulacak özellikadı # t olmak için komut true olması ayarlanmalıdır listedeki tüm öğeleri demektir

[echo] ${abc} = true 
[echo] ${def} = true 
[echo] ${ghi} = false 
[echo] ${jkl} = true 
[echo] ${mno} = false 

Bildirim = Flaka projesinde görevli olarak katılıyorum

İlgili konular