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.
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:
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:
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%Ich konnte dieses Problem nach Post von hier lösen Ссылка und dann
%Vor%Erstellen Sie eine Pfadreferenz und verwenden Sie sie dann in Ihrer Taskdefinition:
%Vor% Erstellen Sie ~/.ant/lib
und kopieren Sie jsch.jar
als Teil der Build-Initialisierung.