web-dev-qa-db-fra.com

Comment passer à SVN avec une tâche ANT?

Je suis intéressé par de toute façon que je puisse créer une tâche Ant pour extraire les fichiers de Subversion. Je "juste" veux faire le paiement à partir de la ligne de commande. J'utilise Eclipse avec Ant et Subversion depuis un moment maintenant, mais mes connaissances sur Ant et Subversion manquent quelque peu car je comptais sur Eclipse pour tout relier.

Je considère SvnAnt comme une solution intégrée à Subclipse de Tigris à l'adresse http://subclipse.tigris.org/svnant/svn.html . Cela peut fonctionner correctement, mais je n’obtiens que NoClassDefFoundErrors. Pour les plus expérimentés, cela ressemble probablement à un simple problème de configuration Ant, mais je ne le sais pas. J'ai copié les fichiers svnant.jar et svnclientadapter.jar dans mon répertoire Ant lib. Ensuite, j'ai essayé de lancer 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>

Je reçois la réponse suivante:

build.xml:17: Java.lang.NoClassDefFoundError: org/tigris/Subversion/javahl/SVNClientInterface

J'exécute SVN 1.7 et SvnAnt 1.3 sur Windows XP 32 bits.

Merci pour tous les pointeurs!

15
Josh

Si vous ne faites pas 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>
24
JW.

De cette erreur, il semble que vous ayez probablement aussi besoin du fichier jar JavaHL sur votre chemin de classe (JavaHL désigne les liaisons de langage Java pour l'API Subversion). Vous une

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

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

7
Wilhelm Kleu

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

Puis en 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 vous obtenez votre erreur parce que vous n'avez pas copié le fichier svnjavahl.jar dans le dossier lib. Faites cela et ça devrait marcher.

Vient de remarquer quelque chose, vous incluez UN pot, pas **/*.jar comme je le fais, donc il ne peut pas trouver votre svnjavahl.jar.

5
omermuhammed

Si vous essayez de faire en sorte qu'Ant utilise le client en ligne de commande, vous devrez peut-être effectuer les opérations suivantes:

<svn username="abc" password="123" javahl="false" svnkit="false"> 
3
Dingo
  1. Tous les fichiers .jar contenus dans ANT_HOME/lib (et ${user.home}/.ant/lib et quelques autres emplacements) sont automatiquement disponibles. Votre <typedef> n'a donc pas besoin de chemin de classe.

  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 fichiers jar par svnant.1.3.

    svnClientAdapter.jar
    svnjavahl.jar
    

    avec des versions mises à jour. Je les ai extraites de la distribution 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
    
3
Simon Parker

J'ai trouvé cette page très utile pour faire avancer les choses. Pour la dernière version, j'ai constaté que la méthode approuvée pour définir les paramètres svn est la suivante:

<svnSetting svnkit="true" javahl="false" id="svn.settings" />

Cela signifie que la commande SVN elle-même devrait être:

<svn refid="svn.settings">//Other commands</svn>

En fait, je voulais le mode svnkit. Les bibliothèques mentionnées ci-dessus étaient OK, mais il me fallait aussi les éléments suivants:

org.tmatesoft.sqljet_1.1.7.r1256_v20130327_2103.jar org.tmatesoft.svnkit_1.7.9.r9659_v20130411_2103.jar

org.tigris.Subversion.clientadapter.svnkit_1.7.9.2.jar

Ceux-ci sont tous disponibles dans le téléchargement de subclipse mentionné. Le tmatesoft avait également besoin de:

antlr-3.5.2-complete.jar

Disponible à partir d'ici: Antlr

0
PeterS

J'avais presque la même configuration, avec le même problème.

Je l'ai résolu en supprimant 2 svn * .jar que j'avais mis dans mon installation ant (sous debian) sous

/usr/share/ant/lib

plus tôt. La fourmi a été confondue par plusieurs pots.

0
nasty pasty