Dans la société où j’effectue mon stage actuellement, on utilise Maven. Je ne vais pas détailler maintenant ce « truc » parce que j’en serai bien incapable mais en gros Maven est un projet d’Apache qui fournit : des normes, des méthodes de build automatisées et peut-être d’autres choses. Hum, on va dire ça comme ça !
On utilise Maven avec Ant pour builder, et on peut donc utiliser toutes les commandes d’Ant dans les fichiers de configuration de Maven, enfin en théorie. Une des méthodes que l’on utilise fréquement sous Maven est la méthode deploy
. Cette méthode copie les jar
générés (oui, oui, je fais du Java !) à l’endroit que l’on a configuré, généralement en utilisant copy
d’Ant. Du coup, moi ce qu’on m’a demandé de faire c’est de créer une méthode deployProd
qui copie les jar sur le serveur distant de production. L’idée est donc d’utiliser scp
(la commande de copie en SSH en shell) et non plus copy. Les problèmes commencent à ce niveau là et sont sûrement dû au fait que je travaille sous Windows et non sous Linux…
Avant de commencer : j’utilise Maven 1 et je crois qu’on utilise une architecture assez bizarre, mais je n’ai pas suffisement d’expérience pour aller plus loin.
La commande scp d’Ant
Avant de commencer la première chose à faire, c’est de lire la doc des méthodes d’Ant, notamment celle d’scp : ant:scp. Et là on se dit : « super ça va marcher comme sur des roulettes », et on fonce.
<goal name="deployProd"> <echo message="Copie de monFichier.jar vers serveur distant : user@host:/dossier"/> <ant:scp file="monFichier.jar" todir="user@host:/dossier" password="monPassword"/> </goal>
Je ne sais pas si cela vient du fait que je suis sous Windows (qui ne connait pas scp), mais chez moi rien ne se passe…
La commande exec d’Ant avec pscp.exe
Je ne sais plus sur quel forum, j’ai découvert la méthode exec
d’Ant dont voici la doc : doc exec. Cette commande exécute une commande ou un programme. On pourrait donc utiliser ant:exec excecutable="scp"
, si on connaissait la commande scp
, mais ce n’est pas le cas. Par contre, on peut utiliser pscp.exe : un programme qui émule la commande scp sous Windows. Je l’avais déjà utilisé avec Putty, mais j’ignorais que l’on pouvait l’utiliser hors de ce contexte. On peut télécharger ce programme sur le site de Putty : télécharger pscp.exe
Du coup, notre code devient :
<goal name="deployProd"> <ant:exec executable="cheminVersPscp/pscp.exe"> <ant:arg line=" -pw monPassword monFichier.jar user@host:/dossier" /> </ant:exec> </goal>
Et voilà le travail ! Pfiou, j’aurai bien galéré pour trouver ça.
One Response to Maven Ant et scp