16 votes

Comment extraire du SVN avec une tâche ANT ?

Je suis intéressé par de quelque manière que ce soit que je peux créer une tâche Ant pour extraire les fichiers de SubVersion. Je veux "juste" faire le checkout à partir de la ligne de commande. J'utilise Eclipse avec Ant et SubVersion depuis un certain temps maintenant, mais mes connaissances de Ant et SubVersion sont quelque peu insuffisantes car je me suis appuyé sur Eclipse pour tout connecter.

Je me suis penché sur SvnAnt, qui fait partie de Subclipse de Tigris, à l'adresse suivante http://subclipse.tigris.org/svnant/svn.html . Cela peut fonctionner correctement, mais je n'obtiens que des NoClassDefFoundErrors. Pour les plus expérimentés, cela ressemble probablement à un simple problème de configuration d'Ant, mais je n'en sais rien. J'ai copié svnant.jar et svnclientadapter.jar dans le répertoire lib de Ant. Puis j'ai essayé d'exécuter ce qui suit :

<?xml version="1.0"?>

<project name="blah"> 

 <property environment="env"/>

 <path id="svnant.classpath">
  <pathelement location="${env.ANT_HOME}/lib"/>
  <fileset dir="${env.ANT_HOME}/lib/">
   <include name="svnant.jar"/>
  </fileset>
 </path>

 <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath" /> 

 <target name="checkout">
  <svn username="abc" password="123">
   <checkout url="svn://blah/blah/trunk" destPath="workingcopy"/>
  </svn>
 </target>

</project>

Ce à quoi je reçois la réponse suivante :

build.xml:17: java.lang.NoClassDefFoundError: org/tigris/subversion/javahl/SVNClientInterface

J'utilise SVN 1.7 et SvnAnt 1.3 sur Windows XP 32 bits.

Merci pour tout conseil !

27voto

JW. Points 17361

Si vous ne parvenez pas à faire fonctionner SvnAnt, vous pouvez toujours utiliser exec :

<exec executable="/usr/local/bin/svn">
    <arg value="co" />
    <arg value="svn://repository/url" />
    <arg value="/destination/directory" />
</exec>

7voto

Wilhelm Kleu Points 2682

D'après cette erreur, il semble que vous ayez probablement besoin du jar JavaHL dans votre classpath également (JavaHL est une liaison de langage Java pour l'API Subversion). Vous avez

Cette URL pourrait vous aider : http://subclipse.tigris.org/wiki/JavaHL

Sinon, vous pouvez utiliser Ant pour exécuter une commande native (mais cela dépendrait du système d'exploitation, bien sûr).

5voto

omermuhammed Points 5468

Voyons si cela peut vous aider, j'ai copié svnjavahl.jar, svnClientAdapter.jar et svnant.jar dans mon dossier $ANT_HOME/lib.

Puis dans le fichier xml :

    <path id="svnant.classpath">
    <fileset dir="${ABSOLUTE-PATH-TO-ANT-HOME}/lib">
        <include name="**/*.jar"/>
    </fileset>
</path>

<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath" /> 

Et puis, pour vérifier

    <svn dateFormatter="yyyy-MM-dd HH:mm">
    <checkout url="${MY-REPO-PATH}" 
              destpath="${checkout.dir}/MODULE-NAME" 
                      ....
</svn>

Je pense que tu obtiens ton erreur parce que tu n'as pas copié dessus svnjavahl.jar dans le dossier lib. Faites-le et ça devrait fonctionner.

Je viens de remarquer quelque chose, vous incluez UN pot, pas **/*.jar comme moi, donc il ne peut pas trouver votre svnjavahl.jar.

3voto

Dingo Points 2238

Si vous essayez de faire en sorte que Ant utilise le client de ligne de commande, vous devrez peut-être procéder comme suit :

<svn username="abc" password="123" javahl="false" svnkit="false">

3voto

Simon Parker Points 31
  1. Tous les fichiers .jar se trouvant dans ANT_HOME/lib (et ${user.home}/.ant/lib et quelques autres endroits) sont automatiquement disponibles, de sorte que votre <typedef> n'a pas du tout besoin d'un classpath.

  2. La distribution svnant n'a pas été mise à jour pour la version 1.7. Vous pouvez toujours utiliser svnant.jar, mais vous devez remplacer ces jars de svnant.1.3

    svnClientAdapter.jar
    svnjavahl.jar

    avec des versions mises à jour. Je les ai extraites du site subclipse 1.8, et je n'ai même pas eu à les renommer :

    org.tigris.subversion.clientadapter.javahl_1.7.2.jar
    org.tigris.subversion.clientadapter_1.8.0.jar

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X