2009-12-03 6 views
8

Bitte helfen Sie, ich werde ein bisschen verrückt !!Neu bei Ant - Problem mit relativen Pfaden

Ich benutze Eclipse-generierte Anti-Dateien, um ein Projekt mit Abhängigkeiten zu erstellen, von denen eines eine eigene Builddatei in einem Verzeichnis hat, das ein Geschwister zum direkten Vorfahren des Projekts ist, das ich baue. Z.B. Wenn mein Verzeichnis "/ base/modules/kliniccontext" ist, ist das Verzeichnis einer der Abhängigkeiten einfach "/ base/core".

Also verwendet die generierte build.xml ../../core welche afaik korrekt ist. Aber es ist nicht!! Von der Konsole ist offensichtlich, dass Ant drei Ebenen und nicht nur zwei (es gibt FileNotFound auf "/core/build.xml") zurückgeht.

ich den relativen Pfad zu „../core“ und viel zu meinem Erstaunen, auf diese Weise Ant geht zurück durch eine Ebene zu ändern versucht, (es jammert ‚/ base/modules/Kern‘ Wesen nicht existent). Also, wie in der Welt sage ich Ant t gehen von zwei Ebenen? Ich würde es vorziehen, absolute Pfade zu vermeiden, da ich das Projekt irgendwann auf eine andere Maschine verschieben muss.

Danke allen.

Antwort

10

Alle Ant-Pfad wird relativ zu Ihrem aktuellen Arbeitsverzeichnis sein.

Überprüfen Sie, aus welchem ​​Verzeichnis Sie Ihr Skript ausführen.

Ich schlage vor, dass Sie anfangen, ${basedir} zu verwenden, um einen Pfad relativ zu einer Position von build.xml zu erhalten.

In Ihrem Fall sollte der relative Pfad wie folgt aufgebaut sein: ${basedir}/../../core, anstelle von ../../core.

Die Inkonsistenzen, auf die Sie stoßen, veranschaulichen einen Punkt, warum Eclipse-generierte Ant-Skripte ein guter Ausgangspunkt sind, aber niemals ein gutes Projekt-Build-System.

BEARBEITEN. Ich frage mich, warum Eclipse-Ameisen-Generator ${basedir} nicht in relativen Pfaden einfügen? Vielleicht solltest du es als Fehler melden.

+0

$ {basedir} ist korrekt eingestellt auf. Das ist auch der Speicherort der Builddatei, die ich verwende. – Alessandro

+3

Ja, aber der Pfad wie dieser ('../../ core') ist nicht relativ zu einem basedir. '../../ core' ist abhängig von Ihrer CWD,' $ {basedir} /../../ core' nicht. –

+1

Das hat es geschafft, danke! Ich dachte nicht, dass buildfiles von Abhängigkeiten die CWD nicht ändern würden. – Alessandro