La tâche Ant scp ne fonctionne pas, même avec jsch sur ant/lib
Question
Je dois copier un fichier war via scp.
J'ai ajouté le jsch-0.1.42.jar
à $ANT_HOME/lib
mais j'obtiens toujours cette erreur :
Cause:La classe org.apache.tools.ant.taskdefs.optional.ssh.scp n'a pas été trouvée.Cela ressemble à l'un des composants facultatifs d'Ant.
C'est le résultat de la course ant -diagnostics
Au cas où:
La solution
Cela ressemble à votre problème, à partir du haut du diagnostic:
tâches facultatives: Non disponible
Votre répertoire ANT_HOME de $ / lib manque ant-jsch.jar, qui est l'endroit où votre classe manquante vient.
Je ne sais pas comment cela est arrivé - j'installe toujours Ant à partir du fichier ZIP sur le site de téléchargement , qui comprend toutes les tâches facultatives. Si vous avez installé Ant à partir d'un package Linux, essayez de vérifier pour voir s'il y a un paquet séparé pour les tâches facultatives.
Une fois que vous obtenez les tâches optionnelles installées, je supprimerais l'ancienne version de jsch.jar comme le suggère @trashgod.
Autres conseils
J'ai eu le même problème et je l'ai résolu !N'oubliez pas que vous avez besoin LES DEUX ant-jsch.jar
(natif de l'installation Ant ou Java) et mis à jour jsch
(dans mon cas, c'était jsch-0.1.46.jar
) dans le répertoire lib ant.
Vous devez charger le plus récent jsch.jar
depuis http://www.jcraft.com/jsch/ et ajoutez au dossier libs (mais ne remplacez pas ant-jsch.jar
).
L'erreur que font beaucoup de développeurs :
ant-jsch.jar
obsolète (dans ce cas, la tâche <scp> est inconnue pour ant)- Ajustez les versions des bibliothèques, donc
ant-jsch.jar
etjsch
sont compatibles. jsch
n'existe pas ou est obsolète dans le répertoire lib ant- Indigène
ant-jsch.jar
remplacé parjsch
(je l'ai fait...)
Dans les 2 derniers cas, la fourmi sait scp commande, mais dit qu'elle n'est pas disponible.
J'ai ajouté les dépendances ant-jsch et jsch dans Maven pom.xml ou y compris les deux pots en construction a résolu le problème.