11
votes

Différentes cibles sur différents systèmes d'exploitation avec fourmi

J'ai une cible d'ant, je ne veux pas qu'on appelle à moins que je n'entre pas ANT sur Linux (non appelé Windows) xxx

la cible que je ne veux pas que l'appelle windows soit : compile.nic

Comment puis-je faire cela?

ant

0 commentaires

4 Réponses :


7
votes

Puis-je faire spécificité la tâche de copie des fournes?

Certaines tâches prennent en charge l'attribut OS code>. Par exemple Exec: P>

<exec executable="cmd" os="windows"/>


1 commentaires

Dans ANT 1.7 et UP, EXED prend en charge l'attribut "Osfamily", qui est plus générique.



1
votes

Vous pouvez utiliser la condition os pour définir une propriété, puis ignorer votre cible en ajoutant le si ou sauf si attributs (selon sur la façon dont vous définissez votre propriété)


0 commentaires

15
votes

Insérez une propriété si la propriété de votre compilation.nic. xxx

et utilisez ces conditions avant d'exécuter votre cible xxx


0 commentaires

11
votes

Voici un exemple du monde réel des commandes Windows Vs. Unix. L'autre s'améliore sur les réponses précédentes.

<condition property="maven.executable" value="mvn.bat" else="mvn">
  <os family="windows" />
</condition>

<target name="clean">
  <exec executable="${maven.executable}">
    <arg value="clean" />
  </exec>
</target>


2 commentaires

Je pensais que vous pouviez simplement exécuter "MVN" et Windows appendrait silencieusement le .bat pour vous. Avez-vous des anticipées de ce comportement? : /


Oui, le comportement de Windows est un peu différent avec : "Les délégués de tâches à Runtime.exec qui appellent apparemment apparemment :: CreateProcess. C'est la dernière fonction Win32 qui définit la sémantique exacte de l'appel. Dans particulier, si vous ne mettez pas d'extension de fichier sur l'exécutable, seuls les fichiers ".exe" sont recherchés, non ".com", ".cmd" ou d'autres types de fichiers énumérés dans l'environnement variable pathext. Ceci n'est utilisé que par La coquille." - ant.apache.org/manual/tasks/exec.html