En utilisant ant pour détecter des os et de l'ensemble de la propriété
Je veux définir une propriété dans une tâche ant différemment par type de système d'exploitation.
La propriété est un répertoire, sous windows, je le veux "c:\flag" sous unix/linux "/opt/drapeau".
Mon script ne fonctionne que quand je le lance avec la cible par défaut, mais pourquoi ?
<target name="checksw_path" depends="if_windows, if_unix"/>
<target name="checkos">
<condition property="isWindows">
<os family="windows" />
</condition>
<condition property="isLinux">
<os family="unix" />
</condition>
</target>
<target name="if_windows" depends="checkos" if="isWindows">
<property name="sw.root" value="c:\flag" />
<echo message="${sw.root}"/>
</target>
<target name="if_unix" depends="checkos" if="isLinux">
<property name="sw.root" value="/opt/flag" />
<echo message="${sw.root}"/>
</target>
Dans toutes mes cibles ant j'ai ajouté un "depends=checksw_path".
Si je suis la cible par défaut dans windows j'ai correctement "c:\flag" mais si je lance un non cible par défaut j'ai mis le débogage va dans le if_windows mais l'instruction "" ne définissez pas la propriété qui reste /opt/drapeau. Je suis en utilisant ant 1.7.1.
Vous devez vous connecter pour publier un commentaire.
Déplacer votre état de la
<target />
, que votre cible n'est probablement pas invoquée.Vous devez définir la valeur "true" à la propriété pour la si la condition de travail. Voir le code ci-dessous:
HTH,
Hari
J'ai utilisé ce script, et il a bien fonctionné pour moi:
Si vous souhaitez définir cette propriété unique basé sur le système d'exploitation, vous pouvez le mettre directement, sans la nécessité de créer des tâches:
Essayez de définir
<sysproperty key="foobar" value="fowl"/>
dans votre java tâche.Ensuite, dans votre application, de l'utilisation du Système.getProperty("foobar");
D'abord, vous voulez définir une variable à true ou false selon le système d'exploitation (OS):
Alors vous voulez déclencher votre logique à l'aide de la variable. Pour cela, vous pouvez trouver la réponse ici:
http://boulderapps.co/running-different-ant-tasks-depending-on-the-operating-system
En utilisant Ant Contrib, vous pouvez simplifier votre fichier de génération en réduisant la quantité d'éléments que vous devez déclarer dans le but d'ajouter à ces conditions.
J'ai résolu de l'exécution de la tâche ant avec la valeur de sw.de la racine à l'aide de -Dsw.racine=c:\drapeau (pour windows) ou -Dsw.root=/opt/superwaba (pour linux).
En tout cas merci