Comment détecter le système d’exploitation Windows dans ANT

J’utilise ant pour comstackr une application Java. Le problème est que certains développeurs sont sur Win 7 et d’autres sur XP et Vista. Une partie de la compilation consiste à construire un msi en utilisant WIX, sur win7, il s’agit d’un répertoire et sur xp et vista, dans un autre.

La tâche de fourmi est contrôlée dans Maven. Je suis après un moyen de faire la différence entre les systèmes d’exploitation Windows dans ant avec une balise conditionnelle pour définir le répertoire wix. Des idées?

Je sais que ce sera dans ce format:

  Check for windows 7   set wix path to win 7 installation   set to vista/xp wix installation   

Toute aide est la bienvenue.

Il semblerait que l’ANT puisse tester le nom, la famille et la version du système d’exploitation:

  • Ant Tasks – conditions

Sur la base de ce lien, certaines propriétés liées au système d’exploitation peuvent être interrogées. L’une est la propriété de family normale utilisée dans le code commun:

     

Ma version d’ANT n’imprime pas de valeur résolue pour ${os.family} .


Il y a aussi:

  • os.name <--- c'est celui que vous devez vérifier
  • os.arch
  • os.version

Voici un script de démonstration que j’ai fait pour montrer l’utilisation de ces propriétés:

                     

Depuis que vous avez répondu à cette question, le code ci-dessus a été promu dans notre système de production, où il fournit des fonctionnalités partagées sur Windows et Mac.


@thekbb a fait une bonne suggestion de supprimer le et de mettre à jour la définition de la cible en fonction de display_windows , conformément au code ci-dessous:

       

Cela est basé sur le fait que antcall lance une nouvelle instance de ant dans une nouvelle JVM. Certains utilisateurs peuvent trouver cette optimisation plus facile à comprendre; d’autres peuvent vouloir le faire pour des raisons de performance.