Quelque chose qui peut être pratique avec ant est la possibilité d'éxécuter des commandes sur un serveur linux ou copier des fichiers via ssh.
Pour cela il vous faut un jar : jsch.jar.
Il faut ensuite ajouter ce jar au classpath des external tools d'Eclipse
Pour y arriver :
- afficher la vue ANT
- Drag and Dropper votre script ANT dans cette vue
- clique droit sur le script dans la vue -> Run as... -> Open External Tool Dialog
- Classpath
- Additional Tasks & Support
- Add External Jars...
- Ajouter jsch.jar
Au niveau du script ANT:
build.properties
temp=D://Temp//
integration.url=192.168.0.1
integration.export=/home/j2ee/export/
integration.tomcat=/home/j2ee/tomcat/
integration.user=j2ee
integration.password=j2ee
build.xml
<target name="update_integration" description="Mets a jour le serveur d'intégration">
<echo message="Déployement sur le vserver" />
<delete file="${temp}maWebapp.zip" />
<zip destfile="${temp}maWebapp.zip" basedir=".">
<exclude name="WEB-INF/classes/log4j.properties" />
<exclude name="work" />
<exclude name=".**" />
<exclude name="build*" />
<exclude name="build.xml" />
</zip>
<echo message="Copie du zip sur vserver" />
<scp trust="true" file="${temp}maWebapp.zip" todir="${integration.user}@${integration.url}:${integration.export}" password="${integration.password}" />
<echo message="Arrêt tomcat" />
<sshexec trust="true" host="${integration.url}" username="${integration.user}" password="${integration.password}" command="${integration.tomcat}bin/shutdown.sh" />
<echo message="Attente 10 secondes arrêt tomcat" />
<sleep seconds="10" />
<echo message="Decompression distante" />
<sshexec trust="true" host="${integration.url}" username="${integration.user}" password="${integration.password}" command="unzip -o ${integration.export}maWebapp.zip -d ${integration.tomcat}webapps/maWebapp/" />
<echo message="Redémarrage du tomcat" />
<sshexec trust="true" host="${integration.url}" username="${integration.user}" password="${integration.password}" command="${integration.tomcat}bin/startup.sh" />
</target>
Note : Je conseille pour le transfert de fichier de compresser les fichiers et ensuite les décompresser sur le serveur.
Si vous avez trop de fichiers, le scp ne semble pas apprécier alors que l'envoi d'un unique gros fichier (un zip) ne pose pas de soucis.