web-dev-qa-db-fra.com

définir la propriété ant de l'environnement avec la valeur par défaut

Je souhaite que mon script de génération fonctionne correctement pour les environnements de publication et de développement.

Pour cela, je voudrais définir une propriété dans ant, appelez-la (par exemple) fileTargetName

fileTargetName obtiendra sa valeur de la variable d'environnement RELEASE_VER si elle est disponible, si elle n'est pas disponible, elle obtiendra la valeur par défaut de dev

Nous vous remercions de vous aider avec les instructions <condition><value></condition> & <property> pour le faire fonctionner.

51
Maxim Veksler

Un exemple tiré de la documentation Ant sur la manière d’obtenir une variable d’environnement dans une propriété:

<property environment="env"/>
<echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
<echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>

Dans votre cas, vous utiliseriez ${env.RELEASE_VER}.

Ensuite, pour la partie conditionnelle, la documentation ici indique qu'il existe trois attributs possibles:

 Attribut Description Obligatoire 
 Propriété Nom de la propriété à définir. Yes 
 Value Valeur à laquelle définir la propriété. La valeur par défaut est "true". No 
 Else Valeur sur laquelle définir la propriété si la condition No 
 évalue à faux. Par défaut, la propriété sera 
 rester non réglé. Depuis Ant 1.6.3 

Mettre ensemble:

<property environment="env"/>
<condition property="fileTargetName" value="${env.RELEASE_VER}" else="dev">
    <isset property="env.RELEASE_VER" />
</condition>
76
Michael Myers

Vous n'avez pas besoin d'utiliser un <condition> pour cela. Les propriétés de Ant sont immuable , vous pouvez donc simplement utiliser ceci:

<property environment="env"/>
<property name="env.RELEASE_VER" value="dev"/>

Si la variable d'environnement RELEASE_VER est définie, la propriété tirera sa valeur de l'environnement et la deuxième instruction <property> n'aura aucun effet. Sinon, la propriété sera supprimée après la première instruction et la deuxième instruction définira sa valeur sur "dev".

40
Jason Day

Je suis sûr qu'il existe des moyens plus faciles que cela, mais que diriez-vous:

<project name="example" default="show-props">

    <property environment="env" />

    <condition property="fileTargetName" value="${env.RELEASE_VER}">
        <isset property="env.RELEASE_VER" />
    </condition>

    <condition property="fileTargetName" value="dev">
        <not>
            <isset property="env.RELEASE_VER" />
        </not>
    </condition>

    <target name="show-props">
        <echo>property is ${fileTargetName}</echo>
    </target>

</project>
0
toolkit