Frage

Ich habe ein build-Skript und als Teil dieses Skript kopiert es eine jar-Datei in ein Verzeichnis, für Leichtigkeit, können nennen es das utils jar.das utils jar gebaut ist, von einem anderen build-Skript sitzt in einem anderen Verzeichnis.Was ich versuche zu tun haben, mein build-Skript ausführen utils build-Skript, so dass ich sicherstellen kann, dass das utils jar ist bis zu Datum.

Also ich weiß, ich muss zu importieren utils build-Datei.

<import file="../utils/build/build.xml" />

Das funktioniert nicht, da die task importieren, im Gegensatz zu fast allen anderen ant taks, läuft nicht aus basedir, es läuft aus dem "pwd".So, das zu umgehen, habe ich dieses kleine Liedchen, die nicht erfolgreich importieren Sie die build-Datei

  <property name="baseDirUpOne" location=".." />
  <import file="${baseDirUpOne}/utils/build/build.xml" />

So, jetzt, dass ive löste mein import-problem muss ich anrufen die Aufgabe, gut, das sollte einfach sein Recht:

<antcall target="utils.package" />

beachten Sie, dass in der oben utils ist der name des Projekts von ../utils/build/build.xml

das problem ich bin jetzt in ist, dass ant-Aufruf nicht ausführen ../utils/bauen, damit das, was ich brauche, und kann nicht finden, ist runat Eigenschaft oder etwas ähnliche, im wesentlichen:

<antcall target="utils.package" runat="../utils/build" />

Der Grund, den ich brauche, das ist, dass in meinem utils build-Datei der Schritt, um auszuwählen, welche code kopieren, um das Glas wird basierend auf der relativen Pfade so as to avoid hardcoding Pfade in meinem ant-Datei.Irgendwelche Ideen?

War es hilfreich?

Lösung

Ich habe etwas ähnliches einrichten:Ich habe einen main Ant build.xml die Anrufe, die eine separate build.xml kümmert sich um den Aufbau meines tests.Dies ist, wie ich es mache:

<target name="build-tests">
    <subant target="build">
      <fileset dir="${test.home}" includes="build.xml"/>
    </subant>
</target>

Der trick ist, zu verwenden subant statt antcall.Sie nicht haben zu import die anderen build-Datei.

Andere Tipps

Versuchen Sie es mit dem "ant" Aufgabe anstelle von "antcall" Aufgabe, die ausgeführt wird, werden die importierten bauen, sondern direkt Import in die aktuelle build-Datei.Es hat ein "dir" - parameter:

das Verzeichnis an, das als basedir für die neue Ant-Projekt.Standardmäßig das aktuelle Projekt ist basedir, es sei denn, inheritall wurde auf false gesetzt wird, in diesem Fall wird es keine Standard - Wert.Dies überschreibt die basedir Einstellung des namens project.

So könnten Sie tun:

<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" />

oder so etwas wie, dass.

Sie können pass params unten, um antcall Verwendung in der verschachtelten antcall block.So können Sie die Eigenschaften auf diese Weise (wahrscheinlich sogar basedir seit Eigenschaften sind unveränderlich).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top