2009-12-03 7 views
8

S'il vous plaît aider, je vais un peu fou!Nouveau à Ant - Problème avec les chemins relatifs

J'utilise antfiles Eclipse généré pour construire un projet avec des dépendances, dont un a son propre fichier de construction dans un répertoire qui est un frère à l'ancêtre direct du projet que je construis. Par exemple. si mon répertoire est "/ base/modules/clinicalcontext", le répertoire de l'une des dépendances est simplement "/ base/core". Ainsi, le build.xml généré utilise ../../core, ce qui est exact. Mais ce n'est pas!! De la console, il est évident que Ant retourne trois niveaux et pas seulement deux (il donne FileNotFound sur "/core/build.xml").

J'ai essayé de changer le chemin par rapport à « ../core » et beaucoup à mon grand étonnement, cette façon Ant remonte par un niveau (il se lamente «/base/modules/noyau » être inexistant). Alors, comment dans le monde je dis Ant t revenir par deux niveaux? Je préférerais éviter d'utiliser des chemins absolus, car il se pourrait que je doive déplacer le projet vers une autre machine un jour.

Merci à tous.

Répondre

10

Tous les chemins Ant seront relatifs à votre répertoire de travail actuel. Donc, vérifiez dans quel répertoire vous exécutez votre script à partir de.

Je suggère que vous commenciez à utiliser ${basedir} pour obtenir un chemin relatif à un emplacement de build.xml. Dans votre cas, le chemin relatif doit être construit comme suit: ${basedir}/../../core, au lieu de ../../core.

Les incohérences que vous rencontrez illustrent pourquoi les scripts ant générés par eclipse sont un bon point de départ, mais jamais un bon système de construction de projet.

EDIT. Je me demande pourquoi eclipse ant générateur n'insère pas ${basedir} dans les chemins relatifs? Peut-être que vous devriez le signaler comme un bug.

+0

$ {basedir} est correctement défini sur. qui est aussi l'emplacement du buildfile que j'utilise. – Alessandro

+3

Oui, mais le chemin comme ceci ('../../ core') n'est pas relatif à un base. '../../ core' dépend de votre CWD,' $ {basedir} /../../ core' ne l'est pas. –

+1

Ça l'a fait, merci! Je n'ai pas considéré que les buildfiles des dépendances ne changeraient pas le CWD. – Alessandro

Questions connexes