Intégration ANT / SUBVERSION avec SVNAnt

Objis

Automatisez la création de 'tags' et de 'branches' dans un repository SVN. Automatisez également le 'checkout' ainsi que l'export des sources (sans les .svn). Découvrez l'outil SVNAnt et utilisez la tache ANT 'svn' pour récupérez les sources, lancer les opérations de compilation du source, des tests, et génération de rapports.

- Titre : Intégration ANT / SUBVERSION avec SVNAnt

- Auteur : Objis

- Parution : 17 janvier 2010

- Licence : Copyright ® 2009 Objis. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 0. Introduction

- 1. Prérequis

- 3. Objectifs

- 4. Programme

- 5. Partie 1 : Installer SVNAnt

- 6. Création d'un TAG

- 7. Création de BRANCHES

- 8. Export

- 9. Conclusion

0 - Introduction

Ce tutoriel est un extrait de séances pratiques de la formation SPRING dispensée par Objis.

1 - Prérequis

Le seul prérequis à ce tutoriel est d'avoir Ant installé sur votre machine.

3 - Objectifs

Intégrer ANT et SUBVERSION

4 - Programme

Partie 1 : Installer SVNAnt : 15 min

5 - Partie 1 : Installer SVNAnt

Téléchargez SVNAnt à partir du site officiel.

Contenu du répertoire lib :

- Copiez les jars antlib.jar et svnClientAdapter.jar dans ANT_HOME/lib ou bien (comme ici) dans un répertoire spécifique : svn-ant-lib

- Dans le build ANT, ajoutez la ligne :

&#8212;

A partir de la documentation de SVNAnt, expliquez la configuration suivante.

<property file="build.properties"></property>

<!-- Proprietes SVN and SVN-ANT Taches -->
<property name="svn.repository.url" value="${svn.repository.url}"/>
<property name="svn.project.base.path" value="${svn.project.base.path}" />
<property name="svn.base.url" value="${svn.repository.url}"/>
<property name="svnant.lib.dir" location="${svn.ant.lib}"/>
<property name="svnant.javahl" value="false" />
<property name="svnant.svnkit" value="true" />
<!-- Proprietes SVN and SVN-ANT Taches -->

6 - Création d'un TAG

Création de Tag 'à la main' :

svn copy -m "Release 1" svn ://localhost/repository1/projet-tax-calculator/trunk svn ://localhost/repository1/projet-tax-calculator/tags/release-1.0

Automatisation

<!-- ****************************************************************** -->
<!-- svntag: cree un TAG en utilisant proprietes                             -->
<!--         fichier  build.properties ainsi que taches SVNANT task          -->
<!-- ******************************************************************* -->
<target name="svntag" description="tags projet individuel en utilisant la tache svnant">
<property name="svn.tag.message" value="Creation du tag ${tag.name}  pour projet ${project.name} a partir de trunk "/>
<property name="src.url"  value="${svn.base.url}/${project.name}/trunk/"/>
<property name="dest.url" value="${svn.base.url}/${project.name}/tags/${tag.name}"/>

<echo message="${svn.tag.message}"/>
<echo message="${src.url}"/>
<echo message="${dest.url}"/>

<svn javahl="${svnant.javahl}" svnkit="${svnant.svnkit}" username="${svn.username}" password="${svn.password}">
<copy srcUrl="${src.url}" destUrl="${dest.url}" message="${svn.tag.message}"/>
</svn>
</target>

7 - Création de BRANCHES

Création de Branche 'à la main' :

svn copy -m "Release 1" svn ://localhost/repository1/projet-tax-calculator/trunk svn ://localhost/repository1/projet-tax-calculator/tags/release-1.1-developpement

Automatisation

<!-- ****************************************************************** -->
<!-- svnbranch: cree une Branche via proprietes                       -->
<!--         fichier  build.properties ainsi que taches SVNANT task          -->
<!-- ****************************************************************** -->
<target name="svnbranch" description="cree une nouvelle branche pour projet individuel a partir de la tache svnant">

<property name="svn.branch.message" value="Creation nouvelle branche pour
le projet ${project.name} avec nom de nouvelle branche ${new.branch.name} a partir de
trunk"/>
<property name="src.url"  value="${svn.base.url}/${project.name}/trunk/"/>
<property name="dest.url" value="${svn.base.url}/${project.name}/branches/${new.branch.name}"/>

<echo message="${svn.branch.message}"/>
<echo message="${src.url}"/>
<echo message="${dest.url}"/>

<svn javahl="${svnant.javahl}" svnkit="${svnant.svnkit}"
username="${svn.username}" password="${svn.password}">
<copy srcUrl="${src.url}" destUrl="${dest.url}" message="${svn.branch.message}"/>
</svn>
</target>

Remarque : pour travailler sur la nouvelle branche :

svn switch svn ://localhost/repository1/projet-tax-calculator/tags/release-1.1-developpement

8 - Export

Automatisation de l'export

<!-- ****************************************************************** -->
<!-- svnexport: cree un export via export proprietes                       -->
<!--         fichier  build.properties ainsi que taches SVNANT task          -->
<!-- ****************************************************************** -->
<target name="svnexport" description="exporte projet individuel en utilisant tache svnant">
<property name="svn.tag.message" value="Export du projet project ${project.name} avec tag ${tag.name}"/>
<property name="src.url"  value="${svn.base.url}/${project.name}/tags/${tag.name}"/>
<property name="destPath" value="${dest.path}"/>
<echo message="${svn.tag.message}"/>
<svn javahl="${svnant.javahl}" svnkit="${svnant.svnkit}" username="${svn.username}" password="${svn.password}">
<export srcUrl="${src.url}" destPath="${destPath}/${project.name}"/>
</svn>
</target>

9 - Conclusion

Dans ce tutoriel, vous avec utilisé SVNAnt pour automatiser des taches courantes d'administration : création de tag et branches