2012-01-24 9 views
5

Estoy intentando hacer un lanzamiento a través del complemento de lanzamiento de Maven y tengo problemas con la configuración de SCM. Estoy usando Eclipse con m2eclipse instalado. Usamos Mercurial y en mi máquina (Win7) tengo instalado TortoiseHg. Tengo un proyecto de prueba que crea un jar. Hacemos uso de un super pom para nuestros proyectos, por lo que el proyecto de prueba pom también lo hace. He creado este pom en el súper:Haciendo lanzamientos con Maven/Hudson/Mercurial

<build> 
    <plugins> 
     .... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin 
      <version>1.6</version> 
      <configuration> 
       <connectionType>connection</connectionType> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Mi prueba pom proyecto es el siguiente:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>my.group</groupId> 
    <artifactId>TestJar 
    <version>1.0-SNAPSHOT</version> 
    <parent>  
     <groupId>my.group</groupId> 
     <artifactId>super-pom</artifactId> 
     <version>1.0</version> 
    </parent> 
    <scm> 
     <connection> 
      scm:hg:ssh://our.scm.server:22//path/to/TestJarProject 
     </connection> 
     <developerConnection> 
      scm:hg:ssh://our.scm.server:22//path/to/TestJarProject 
     </developerConnection> 
    </scm> 
</project> 

Nota que SSH a nuestro servidor SMC. Sospecho que algunos de los problemas que estoy enfrentando se relacionan con esto. Solo he podido encontrar ejemplos que usan http.

En mi settings.xml, que añade esto:

<servers> 
    ... 
    <server> 
     <id>our.scm.server</id> 
     <username>username</username> 
     <password>password</password> 
    </server> 
</servers> 

Cuando corro liberación: liberación de preparar: realizar, un cuadro de diálogo aparece TortoisePlink me pida la contraseña. El cuadro de diálogo pregunta "contraseña de @ our.scm.server".

Parece que no está utilizando el nombre de usuario o la contraseña del archivo settings.xml, que es lo que esperaba al agregarle el elemento del servidor. ¿Deberia ser? También he intentado añadir mi nombre de usuario a la URL de conexión:

<connection> 
    scm:hg:ssh://[email protected]:22//path/to/TestJarProject 
</connection> 

pero todavía incitan para la contraseña de un nombre de usuario vacío.

PREGUNTA UNO

Alguien ha utilizado con éxito ssh para conectarse a Mercurial mientras se hace Maven lanzamientos?

Desde que en última instancia, quiero hacer las compilaciones en Hudson, puedo tener un trabajo de Hudson para hacer el lanzamiento pero se produce este error:

[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s) 
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.\ 
    LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:\ 
    maven-release-plugin:2.0:prepare (default-cli) on project TestJar: Cannot \ 
    prepare the release because you have local modifications : 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/_maven.repositories:unknown] 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom:unknown] 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom.sha1:unknown] 
... many, many more lines of this nature ..... 

PREGUNTA DOS

qué modificaciones locales se encuentra Maven?

Como el proyecto se extrae del repositorio, el único cambio que puedo pensar es en la actualización del archivo pom (eliminando SNAPSHOT de la versión). Pero Maven no debería estar quejándose de esto ya que hizo el cambio en sí, ¿no?

ACTUALIZACIÓN

De acuerdo con la sugerencia de khmarbaise, he añadido esto a mi POM padres:

<pluginManagement> 
    <plugins> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.2.2</version> 
     </plugin> 
    </plugins> 
</pluginManagement> 
+0

Primero haz una sección de plugin Management en tu padre y configura una versión más nueva del maven-release-plugin porque estás usando 2.0 que está un poco desactualizado ... ¿Qué versión de Maven usas? Hudson una actualizada? ¿Utiliza el complemento de lanzamiento de Hudson? – khmarbaise

+0

Estamos utilizando Hudson 2.1.2 y Maven 3 (incluido con Hudson) – sdoca

+0

¿Ha comprobado primero si puede hacer un lanzamiento en línea de comandos sin Hudson? (Se agregó la sección de pluginManagement?) – khmarbaise

Respuesta

2

PREGUNTA UNO

Alguien ha utilizado con éxito ssh para conectarse a Mercurial mientras haces los lanzamientos de Maven?

La respuesta parece ser que el complemento de versión de Maven solo funciona con https.Hemos sido capaces de conseguir https trabajando en nuestro servidor Mercurial por lo general siguiendo las instrucciones de esta página:

https://www.mercurial-scm.org/wiki/HgWebDirStepByStep

PREGUNTA DOS

¿Qué modificaciones locales tropieza con Maven?

Las modificaciones locales son el directorio .maven que se crea durante la compilación. Al agregar .maven/* a mi archivo .hgignore, pude completar la compilación.

0

No puedo reproducir esto ahora, pero por experiencia anterior recuerdo que las conexiones ssh solo funcionan con autenticación basada en clave, no con nombres de usuario y contraseñas. Esto no es necesariamente específico del complemento de lanzamiento y/o su soporte Mercurial.

EDIT: he probado el acceso ssh basado en claves con Mercurial y el complemento de versión 2.4.1, y funciona muy bien. Una posible fuente de problemas es el formato SCM URL. En mi caso es:

scm:hg:ssh://[email protected]/path 

Así que la respuesta a su pregunta uno es: sí, pero no con la autenticación de nombre de usuario/contraseña. No encontré ningún problema de "modificaciones locales", pero tengo el objetivo en mi .hgignore, por lo que podría ser.