build.xml contiennent les tâches <scp>
et <sshexec>
, donc je fournis jsch.jar et autres bibliothèques dans le même répertoire avec build.xml.Existe-t-il un moyen de spécifier l'emplacement d'un fichier jsch.jar local dans build.xml? Les tâches
Le taskdef suivant:
<taskdef name="scp"
classname="org.apache.tools.ant.taskdefs.optional.ssh.Scp"
classpath="WebContent/WEB-INF/lib/jsch-0.1.43.jar" />
renvoie une erreur
A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.Scp
cannot be found: com/jcraft/jsch/UserInfo
Je ne peux pas modifier la norme d'installation Ant (par exemple, mettre jsch.jar dans ant lib , ou supprimer des fourmis jsch. jar), ou ajouter des drapeaux de ligne de commande, ou modifier variables d'environnement système, etc .: le script doit fonctionner avec Ant par défaut sur différents systèmes.
Je suis en fait reposter la question posée ici à l'origine: http://ant.1045680.n5.nabble.com/specifying-location-of-an-external-library-within-build-xml-td1344969.html
mais n'a pas pu obtenir la réponse au sujet classloader au travail.
Il semble que ce soit un problème commun et je pense que c'est la meilleure solution, sauf au lieu d'échouer, je vais juste aller de l'avant et de supprimer le/lib/ant -jsch.jar. Dans le cas où cela aide les autres, Paulo donne une explication du problème central dans son SO [réponse à une question SCP connexe] (http://stackoverflow.com/questions/5796587/problems-with-ant-optional-tasks-sshexec- et-scp-classpath-issue) et [le même problème se produit avec junit et est expliqué ici] (http://ant.apache.org/faq.html#delegating-classloader) – gMale
Mais cela nécessite une modification de l'installation Ant standard . –
J'ai été aux prises avec ce problème pendant des jours et cette solution est la seule que j'ai pu travailler! –