2012-07-02 28 views
5

¿Alguien me puede decir cómo hacer el pago y otras actualizaciones de SVN con Maven? Leí la documentación en maven.apache.org pero parece que soy demasiado tonto para esto porque no puedo entender cómo usar scm: checkout y scm: actualizar sin pasarles los parámetros en la línea de comandos. Me refiero a cuando corro solo:Maven SVN pago

mvn scm:checkout (or scm:update) clean install 

experto comprueba hacia fuera las fuentes en/target/salida, entonces se borra y, por supuesto, no tiene nada que compilar así que tiene frasco vacío. Así que tengo que escribir algo como esto:

mvn scm:checkout -DconnectionUrl=scm:svn:http://svn.my.dev/scm/repo/trunk/myProject -DcheckoutDirectory=src clean install 

¡Pero no quiero! ¿Cómo puedo establecer estos parámetros dentro de pom.xml? ¿Y cómo puedo configurar el directorio actual como checkoutDirectory? (Probablemente no debería ser un problema si la puso en pom.xml porque puedo configurarlo como $ {} project.basedir, pero quién sabe) Mi pom.xml incluye estas líneas:

... 
    <scm> 
    <connection>scm:svn:http://svn.my.dev/scm/repo/trunk/myProject</connection> 
    <developerConnection>scm:svn:http://svn.my.dev/scm/repo/trunk/myProject</developerConnection> 
    </scm> 
... 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <version>1.7</version> 
     <configuration> 
     <username>username</username> 
      <password>password</password> 
     </configuration> 
     </plugin> 
... 

Por cierto, ¿Cuál es la diferencia entre connection y developerConnection? La documentación de Maven solo dice que developerConnection es ... "La URL de conexión de SCM para desarrolladores". Lo cual es muy sorprendente para mí porque pensé que esta es una conexión para las ardillas o pueden ser conejos.

Respuesta

4

Puede agregar la opción checkoutDirectory directamente a la configuración del plugin maven-scm. Una vez que los archivos están desprotegidos, puede utilizar scm:update con la opción workingDirectory (se puede configurar en la configuración plug-in, así)

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.7</version> 
    <configuration> 
    <username>username</username> 
    <password>password</password> 
    <checkoutDirectory>${project.basedir}/src</checkoutDirectory> 
    <workingDirectory>${project.basedir}/src</workingDirectory> 
    </configuration> 
</plugin> 
+0

Sí, gracias, que funciona. Pero todavía no puedo configurar el directorio actual como checkoutDirectory. Si configuro $ {project.basedir} (y lo mismo para workingDirectory) maven por alguna razón solo limpia todo el directorio incluyendo pom.xml y sale diciendo que no puede eliminar el directorio. No es un gran problema, por supuesto, puedo usar el subdirectorio "src" mencionado como checkout y directorio de trabajo, pero para mí sería mejor usar el directorio actual para tal uso. ¿Es posible? – mykola

+0

No, creo que esto no es posible ya que Maven siempre borra el directorio de pago antes de realizar el pago. No sé cómo funciona exactamente tu configuración de compilación, pero tal vez podrías comprometer tu archivo POM junto con tu directorio src/(como la mayoría de las personas lo hacen). Si esto es posible en su entorno, puede ejecutar 'mvn scm: checkout -DconnectionUrl = scm: svn: http: // my-svn-url -DcheckoutDirectory ="/my/checkout/directory "'. También puede poner todas las opciones -D en un POM "bootstrap" y ejecutar 'mvn scm: checkout' o' mvn scm: update' –

+0

Bueno, hice script de shell que revisa/actualiza proyectos y luego ejecuta maven build. Maven svn plugin, después de todo, necesita svn instalado de todos modos y los comandos svn shell son muy fáciles, así que no veo mucho sentido usar el plugin maven svn. – mykola

Cuestiones relacionadas