Gibt es eine Möglichkeit, den Speicherort eines lokalen jsch.jar aus build.xml anzugeben?

8

build.xml enthält <scp> und <sshexec> Aufgaben, also stelle ich jsch.jar und andere Bibliotheken im selben Verzeichnis zusammen mit build.xml.

Der folgende Taskdef:

%Vor%

löst einen Fehler aus

%Vor%

Ich kann die Standard-Ant-Installation nicht ändern (z. B. jsch.jar in ant lib einfügen Verzeichnis, oder entfernen Sie ant-jsch.jar), oder fügen Sie Befehlszeilen-Flags hinzu oder ändern Sie Systemumgebungsvariablen, etc .: Das Skript muss mit dem Standard-Ant laufen auf verschiedenen Systemen.

Ich übergebe die Frage, die ursprünglich hier gestellt wurde: Ссылка

konnte aber nicht die Antwort über den Klassenlader erhalten.

    
Tomasz 16.09.2010, 12:26
quelle

7 Antworten

17

Endlich habe ich eine funktionierende Lösung gefunden (zumindest für Ant 1.7.1). Zuerst müssen Sie ant-jsch.jar von ANT_HOME/lib entfernen, da Ant sich darüber beschwert und verwirrt wird. Laden Sie dann Bibliotheken aus dem Projekt selbst:

%Vor%     
igor 07.12.2010, 13:48
quelle
3

Also, diese Frage ist alt, aber ich habe einen anderen Ansatz entwickelt, der anderen helfen kann. Wir können Ant von einer <java> Aufgabe mit dem richtigen Klassenpfad erzeugen, um <scp> auszuführen. Dies vermeidet das Classpath-Leaking-Problem und erfordert keine Änderung der Ant-Installation in irgendeiner Weise:

%Vor%

Der Parameter port wird nicht benötigt, aber er dient zur Erinnerung für benutzerdefinierte SSH-Ports. Das Passwort ist eine Eigenschaft, die in /tmp/passwordfile wie PASSWORD=mysecretpassword gespeichert ist. Ändern Sie diese nach Ihren Bedürfnissen. Hier folgt ein Anwendungsbeispiel:

%Vor%     
Marcond 02.02.2013 21:07
quelle
2

Zur Referenz: Ein Ansatz, den ich nützlich finde, besteht darin, die Jars neu zu packen, damit sie nicht in Konflikt geraten - das können Sie in Ant mit JarJar so machen:

%Vor%     
Mark Slater 12.06.2013 10:24
quelle
1

Ich konnte dieses Problem nach Post von hier lösen Ссылка und dann

%Vor%     
user3499805 11.10.2016 11:18
quelle
0

Erstellen Sie eine Pfadreferenz und verwenden Sie sie dann in Ihrer Taskdefinition:

%Vor%     
Mark O'Connor 16.09.2010 22:25
quelle
0

Erstellen Sie ~/.ant/lib und kopieren Sie jsch.jar als Teil der Build-Initialisierung.

%Vor%     
Ed Randall 04.08.2016 08:36
quelle
0

Es gibt einen bekannten Trick mit URLClassLoader . Indem wir es verwenden, können wir jsch für ant-jsch zugänglich machen.

Ich frage mich, wie classloadertask von der Antwort von @ user3499805 funktioniert.

%Vor%

_

%Vor%     
basin 22.09.2017 18:52
quelle

Tags und Links