web-dev-qa-db-fra.com

Comment écrire un répertoire de base puis nous exécutons ant comme ant-som som/dir/build.xml

Comment spécifier le répertoire de base alors nous exécutons ant comme ant -f somedir/dir/build.xml. Ant définit basé sur relatif à build.xml, si je le spécifie

<project basedir="." ..>

J'aurais aimé être basé sur l'endroit où Ant est exécuté.

12
Andrei N

Utilisez -D pour remplacer la propriété basedir:

ant -Dbasedir=`pwd` -f path/to/build.xml

L'utilisation de pwd est une chose uniquement sous Linux, mais vous pouvez toujours y placer le chemin absolu du répertoire en cours si vous êtes sur une autre plate-forme.

Je ne pense pas qu'il soit possible de faire cela dans build.xml, à moins de ré-exécuter ant avec la tâche ant.

17
David North

Vous pouvez essayer d'utiliser subant task:

En supposant que vous ayez deux dossiers différents

  1. Votre dossier actuel X:/votre/lancement/dossier où vous exécutez ant commande depuis

  2. Dossier où votre fichier bulid.xml de destination est: Y: /any/folder/with/build.xml

Vous pouvez faire ce qui suit:

Créez build.xml in X:/votre/lancement/dossier avec le contenu suivant:

<target name="mytarget">
    <subant target="debug">
        <fileset dir="Y:/any/folder/with" includes="build.xml"/>
    </subant>
</target>

Ensuite, vous pouvez exécuter ant mytarget from X:/your/launching/folder folder pour commencer à construire votre Y: /any/folder/with/build.xml

Mettre à jour:

Vous pouvez remplacer la propriété basedir pour la construction du sousant comme ceci:

    <subant target="debug">
        <property name="basedir" value="./any/dir/with/project"/>
        <fileset dir="Y:/any/folder/with" includes="build.xml"/>
    </subant>
9
vir us

une autre solution (si cela a plus de sens dans certains cas) pourrait être de remplacer basedir via la tâche varde l’extension antcontrib comme décrit ici: https://stackoverflow.com/a/25786329/1915920

1
Andreas Dietrich