Wie kann ich den Pfad einer JAR in einem Ant-Buildfile angeben?

8

Ich führe eine Menge von scp und sshexec und andere entfernte Befehle von einem Ameisenbau-Skript aus. Diese Befehle funktionieren nicht, wenn sich jsch.jar nicht im Verzeichnis "ant lib " befindet. Damit es funktioniert, habe ich das JAR in das Verzeichnis ant lib kopiert, aber das ist keine gute Lösung, da jeder, der das Skript ausführen möchte, dasselbe tun müsste. Um das Ant-Ziel von Teamcity aus zu starten, müssen wir explizit den Pfad der lib-Datei festlegen.

Gibt es eine Möglichkeit, den Pfad der JAR im ant build XML selbst anzugeben?

    
Ravi 24.02.2011, 12:15
quelle

3 Antworten

4

Danke für deine Antworten. Ich habe es geschafft, es mit Classloader-Task arbeiten zu lassen. Das habe ich gemacht.

%Vor%

Wie Sie hier sehen können, musste ich für mein "Test" -Ziel kein abhängiges Ziel angeben, es funktioniert einfach. Es verwendet den Klassenlader, der jsch.jar an den Systemklassenlader anfügt.

    
Ravi 25.02.2011, 11:06
quelle
2

Eine mögliche Umgehung wäre, die -lib Befehlszeilenoption zu verwenden, um zu sagen, wo nach zusätzlichen Gläsern zu suchen. Vielleicht könnten Sie ein Wrapper-Skript erstellen, das ant mit dieser Option aufruft.

Eine andere Möglichkeit wäre, die Datei ant-jsch.jar (das jar, das mit ant geliefert wird, um die Aufgaben zu definieren, nicht die jsch.jar-Datei, die Sie separat herunterladen müssen) aus Ihrem antit-lib-Verzeichnis zu verschieben und ein taskdef für Ihre ssh-Aufgabe, getrennt von der eingebauten, und dann den Klassenpfad für diese Aufgabe auf jsch.jar und ant-jsch.jar :

setzen %Vor%

Ich bin mir nicht sicher, ob dir das helfen wird, da es auch Änderungen am Verzeichnis lib betrifft.

Soweit mir bekannt ist, ist es momentan nicht möglich, die zusätzlichen Jars anzugeben, die für die eingebauten Aufgaben in der Build-Datei selbst allgemein benötigt werden. Es gibt einige spezielle Fälle, wie zum Beispiel junit.

    
matt 24.02.2011 16:35
quelle
1

Um sicherzustellen, dass Ihr Build plattformübergreifend ist, würde ich vorschlagen, das Abhängigkeitsmanagement zu verwenden. Das Efeu-Plug-In kann die Build-Version automatisch installieren.

Dieser Ansatz bedeutet, dass das letzte Glas, das Sie jemals in Ihre ANT-Bibliothek installieren müssen, ivy-2.2.0.jar ist: -)

Deklarieren Sie zunächst die Abhängigkeiten Ihres Projekts in der Datei ivy.xml

%Vor%

Führen Sie in Ihrer build.xml den Befehl ivy aus, und verwenden Sie ihn, um einen benutzerdefinierten Klassenpfad basierend auf der ivy-Konfiguration zu füllen:

%Vor%

Schließlich, an anderer Stelle in Ihrem Build deklarieren Sie Ihre ANT-Tasks mit dem Klassenpfad, der jetzt automatisch von efeu aufgefüllt wird.

%Vor%

Dieser Ansatz funktioniert für alle ANT-Plug-ins, von denen die meisten im zentralen Maven-Repository verfügbar sind. Der zweite Vorteil ist, dass es einfach ist, die Plug-in-Versionen für alle Builds zu aktualisieren.

    
Mark O'Connor 24.02.2011 18:16
quelle

Tags und Links