2011-11-10 17 views
34

Come si controlla l'esistenza di una proprietà tramite Ant?Come verificare se esiste una proprietà?

Sono aperto all'utilizzo di ant-contrib, se Ant non fornisce una cosa simile.

Inoltre, ant-contrib ha un'attività di asserzione, che fornisce exists, ma l'asserzione non è ciò che mi serve qui poiché preferirei un valore di ritorno booleano.

+1

\t \t \t \t \t \t \t \t \t \t \t

+0

Si prega di modificare il commento di cui sopra, se qualcuno sa come, non so se i tag di codice che usano 4 trattini lavora qui nel commento. –

+1

"if" è supportato solo con Ant-contrib che non consiglierei di utilizzare per sviluppi gravi. – raudi

risposta

52

È possibile utilizzare l'attività Condition con una condizione isset.

<project default="test"> 

    <property name="a" value="a"/> 

    <target name="test"> 

    <condition property="a.set" else="false"> 
     <isset property="a"/> 
    </condition> 

    <condition property="b.set" else="false"> 
     <isset property="b"/> 
    </condition> 

    <echo message="a set ? ${a.set}"/> 
    <echo message="b set ? ${b.set}"/> 

    </target> 
</project> 

uscita:

test: 
    [echo] a set ? true 
    [echo] b set ? false 
+6

Assicurati di ** omettere ** il $ {} attorno ai nomi delle proprietà in '' e ''. – Kent

9

Dal Ant 1.9.1 è possibile usare "se" e "a meno che" gli attributi. Puoi usare questi nuovi attributi se aggiungi i 2 namespace xmlns: if = "ant: if" e xmlns: unless = "ant: a meno" al progetto.

<!DOCTYPE project> 
<project xmlns:if="ant:if" xmlns:unless="ant:unless"> 
    <property unless:set="property" name="property.is.set" value="false"/> 
    <property if:set="property" name="property.is.set" value="true"/> 
    <echo>${property.is.set}</echo> 
</project> 

vedi anche https://ant.apache.org/manual/ifunless.html

+2

In effetti dovresti usare Ant> = 1.9.3 poiché la prima implementazione in Ant 1.9.1 aveva bug relativi alla funzione if/unless! – Rebse

Problemi correlati