usar tutorial proyecto español ejecutar dependencias consola como comandos maven-2 versioning release snapshot maven-release-plugin

maven-2 - proyecto - maven tutorial pdf



cómo lanzar un proyecto que depende de un proyecto SNAPSHOT de terceros en maven (5)

Me gustaría lanzar un proyecto instantáneo ''foo-1.0-SNAPSHOT'' usando el complemento de lanzamiento Maven. El proyecto depende de un módulo de terceros ''bar-1.0-SNAPSHOT'' que aún no se ha lanzado. Utilizo la opción ''allowTimestampedSnapshots'' en pom.xml de mi proyecto para permitir instantáneas con marca de tiempo pero supongo que el módulo de terceros (barra) no tiene marca de tiempo a menos que lo construya yo mismo ya que maven todavía se queja de las dependencias de SNAPSHOT no resueltas.

¿Hay alguna manera de lanzar el proyecto foo independientemente de los proyectos dependientes de SNAPSHOT y, de no ser así, cómo podría agregar una marca de tiempo al proyecto de terceros?


Simplemente instala el frasco con un pom que poseas. En general, cambio el ID de grupo y artefacto para dejar en claro que esta no es la versión oficial, pero que generalmente es la mejor solución para su problema.


La respuesta anterior sugería cambiar el ID de grupo y de artefacto ... no hagas esto ya que maven no lo reconocerá como el mismo artefacto más adelante cuando se libere esta dependencia y terminarás con dos copias en el classpath. Mi método preferido es cambiar solo la versión y haré algo como: [versión original] - [mi nombre de organización] - [svn versión que saqué de] así que obtengo algo como 1.0-SONATYPE-3425. Al usar el svn rev, siempre puedo volver a conectar la fuente y aplicarle un parche si es necesario y saber exactamente lo que estoy usando sin tener que extraer toda la fuente en mi propio svn.

Actualización: publiqué sobre esto hace un tiempo.


El problema está en el nombre del parámetro allowTimestampedSnapshots , está en la documentación pero el origen del complemento usa un nombre de parámetro diferente en la expresión - ignoreSnapshots .

Así que solo use -DignoreSnapshots=true y el objetivo de preparación del complemento de publicación ignorará las dependencias de instantáneas.


Uso de la opción maven-release-plugin

-DignoreSnapshots=true

en lugar de

-DallowTimestampedSnapshots=true

ayudado en mi caso, esto permitirá usar dependencias con la versión de instantánea para preparar y realizar una publicación.

Esta opción debe manejarse con mucho cuidado, ya que el uso de versiones de instantáneas en una versión puede romper su versión más adelante, si la dependencia de la instantánea se actualiza, lo que en el caso normal no es lo que desea.


La respuesta corta es ver la siguiente respuesta ... la respuesta larga es que puedes evitarlo.

La única forma en que me las arreglé en el pasado es bifurcar efectivamente la biblioteca de terceros y cortar un lanzamiento yo mismo. Esto, por supuesto, es más fácil decirlo que hacerlo y es simplemente difícil si la biblioteca es grande y compleja e imposible si la biblioteca de terceros es de código cerrado. Una ruta más fácil tal vez para acercarse a la tercera parte y pedirles que corten un lanzamiento.

Otra opción puede ser copiar su pom (asegúrese de que no tenga instantáneas) cambiar la información de la versión e instalar manualmente el pom y el artefacto en su repositorio.