2010-03-08 16 views
14

Estoy interesado en cualquier forma que puedo crear una tarea Ant para extraer archivos de SubVersion. Yo "solo" quiero hacer el pago desde la línea de comando. He estado usando Eclipse con Ant y SubVersion desde hace un tiempo, pero mi conocimiento sobre Ant y SubVersion es algo deficiente ya que confié en Eclipse para conectarlo todo.¿Cómo realizar el pago desde SVN con una tarea ANT?

He estado viendo a SvnAnt como una solución, que es parte de Subclipse de Tigris al http://subclipse.tigris.org/svnant/svn.html. Puede funcionar bien, pero todo lo que obtengo es NoClassDefFoundErrors. Para los más experimentados esto probablemente parece un problema simple de configuración de Ant, pero no sé de eso. Copié el svnant.jar y el svnclientadapter.jar en mi directorio Ant lib. Luego trató de ejecutar el siguiente:

<?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> 

A lo que me sale el siguiente respuesta:

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

Me postulo SVN 1.7 y 1.3 SvnAnt en Windows XP de 32 bits.

¡Gracias por cualquier puntero!

+0

http://stackoverflow.com/questions/16305315/the-svn-client-svnkit -is-not-available/16310312 # 16310312 –

Respuesta

7

A partir de ese error, parece que probablemente también necesite el jar de JavaHL en su classpath (JavaHL es enlaces de lenguaje Java para la API de Subversion). Eres una

Esta URL puede ayudar a: http://subclipse.tigris.org/wiki/JavaHL

contrario, puede utilizar el uso de Ant para ejecutar un comando nativo (pero que haría OS-dependiente, por supuesto).

3

Si usted está tratando de obtener Ant para utilizar el cliente de línea de comandos, puede que tenga que hacer lo siguiente:

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

Si no configuro los atributos javahl o svnkit, obtengo el NoClassDefFoundError. Si configuro uno o ambos, a verdadero o falso, entonces aparece "No puedo encontrar javahl, svnkit ni la línea de comando svn client". He intentado todas las combinaciones, con y sin svnjavahl.jar en classpath. – Josh

+0

Si hace lo siguiente en su archivo Ant, ¿la ruta de acceso repetida contiene el directorio binario SVN? user261840

+0

Necesita tener a) enlaces Java nativos trabajando para la subversión con JavaHL o b) una línea de comando svn cliente disponible en tu camino. La sugerencia en esta respuesta funciona para b). –

5

vamos a ver si esto ayuda para ti, lo copiado svnjavahl.jar, svnClientAdapter.jar y svnant.jar en mi carpeta $ ANT_HOME/lib.

A continuación, en el archivo 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" /> 

Y luego, por mirar hacia fuera ..

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

creo que está recibiendo su error porque usted no ha copiado sobre svnjavahl.jar archivo en la carpeta lib. Haz eso y debería funcionar.

di cuenta de algo, se está incluyendo un frasco, no **/*.jar como yo, por lo tanto, no puede encontrar su svnjavahl.jar.

23

Si usted no recibe SvnAnt de trabajo, siempre se puede utilizar exec:

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

¡Perfecto! ¡Gracias! ¿No estás seguro de cuál es el sentido de svnAnt si puedes hacer esto? – KOGI

+2

En teoría, desea evitar en tareas ant y, dado que es menos compatible con plataformas cruzadas. Pero eso no es importante en todos los casos. –

+2

Fue la mejor solución en mi caso. Muy simple (basta con instalar un cliente svn (Sliksvn en mi caso), hacer que el PATH apunte a sliksvn/bin y eso es todo. Svnant y javahl es un desastre ... – jmcollin92

0

Tenía casi la misma configuración, con el mismo problema.

lo resolví mediante la supresión de 2 SVN * .jar es que me había puesto en mi hormiga instalar (en debian) bajo

/usr/share/ant/lib 

anterior. Ant fue confundido por múltiples jarras.

3
  1. Todos los archivos .jar en ANT_HOME/lib (y ${user.home}/.ant/lib y algunos otros lugares) están disponibles de forma automática, por lo que su <typedef> no necesita una ruta de clase en absoluto.

  2. La distribución svnant no se ha actualizado para la versión 1.7. Puede seguir utilizando svnant.jar, pero hay que reemplazar estos frascos de svnant.1.3

    svnClientAdapter.jar 
    svnjavahl.jar 
    

    con versiones actualizadas. Me extraído estos datos del subclipse 1.8 Distribución, y ni siquiera tiene que cambiar su nombre:

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

De hecho, esto me ayudó. Si estás en 2012 y obteniendo esto error significa que probablemente esté utilizando subversion 1.7, que aún no es compatible con la distribución svnant. Así que simplemente agregue las dos bibliotecas desde arriba y debería funcionar. –

+0

2014 y todavía no es compatible con nada superior a 1.6 de SVNAnt. Supongo que están usando CLI ellos mismos. –

0

Esta página es muy útil para conseguir este curso. Para la última versión he encontrado que la forma aprobada de establecer la configuración de SVN es el siguiente:

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

Eso significa que el comando SVN en sí debe ser:

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

realidad quería modo svnkit. Las bibliotecas mencionadas anteriormente estaban bien, sin embargo, también se necesita la siguiente añadido:

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

Todos están disponibles en la descarga de subclipse mencionada. El tmatesoft también necesitaba:

antlr-3.5.2-complete.jar

Disponible a partir de aquí: Antlr

Cuestiones relacionadas