2012-07-13 12 views
8
liberación

mvn: prepararpuede liberar Maven: preparar versión de actualización instantánea a la versión en modo batch

Se me pregunta constantemente para resolver las dependencias de instantáneas. ¿Hay alguna manera de hacerlo en modo por lotes para que maven use automáticamente la versión asociada? es decir, si una dependencia es 1.0.0-SNAPSHOT, ¿actualizará automáticamente esta dependencia a la versión 1.0.0?

[INFO] Checking dependencies and plugins for snapshots ... 
There are still some remaining snapshot dependencies.: Do you want to resolve them now?  (yes/no) no: : yes 
Dependency type to resolve,: specify the selection number (0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions): (0/1/2/3) 1: : 1 
Resolve Project Dependency Snapshots.: 'com.my.project' set to release? (yes/no) yes: : yes 
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: : 0.0.2-SNAPSHOT 
+0

¿Ha intentado usar --batch-mode of mvn? – khmarbaise

+0

tampoco ayudará. – khmarbaise

Respuesta

5

Usted puede hacer la actualización de la INSTANTÁNEA de a través de la versions-maven-plugin antes del lanzamiento.

+0

Estoy frente al mismo complemento (versions-maven-plugin 2.2) para este propósito. Pero, por alguna razón, no funciona. Simplemente estoy usando - versions: use-releases y la versión inicial de mi proyecto es 1.0.0-SNAPSHOT. ¿Alguna solución para eso? ¡¡Gracias!! –

3

Si su dependencia es un programa propio y su ciclo de vida está estrechamente relacionado con el que intenta liberar, puede pensar en usar un proyecto de módulos múltiples: http://maven.apache.org/guides/mini/guide-multiple-modules.html. El complemento de lanzamiento de Maven actualizará la versión de todos sus módulos de dependencias.

Si no, probablemente esté haciendo algo que no debería. Simplemente cambiando 1.0.0-SNAPSHOT a 1.0.0 no garantiza que la aplicación continuará funcionando. ¡Así que no considera que Maven debería!

Otras consideraciones

Maven versión del plugin comprueba si está utilizando una dependencia instantánea, debido instantánea, por definición, son vesions inestables. Puede cambiar a lo largo del tiempo. Eso significa que lo que funcionaba hoy puede no funcionar mañana.

Liberar significa que su versión es estable y la construcción se puede reproducir en cualquier momento sin ningún cambio. Al usar la versión Snapshot, esta afirmación se vuelve falsa.

Así,

8

Tenga en cuenta que puede configurar Maven ignorar dependencias INSTANTÁNEA comprobar mediante el uso de allowTimestampedSnapshots, según la documentación experto-release-plugin:

allowTimestampedSnapshots:

si se debe permitir timestamped SNAPSHOT dependencias. El valor predeterminado es fallar al encontrar cualquier SNAPSHOT.

  • Tipo: booleano
  • Desde: 2,0-beta-7
  • requerido: No
  • Expresión: $ {ignoreSnapshots}
  • por defecto: false

O simplemente ejecute el siguiente comando:

liberación mvn: preparar -DignoreSnapshots = true

Sin embargo, todavía se recomienda para resolver todas las dependencias instantánea antes de hacer la versión final, ya que es la convención usada por la mayoría de la gente.Siempre debe considerar hacerlo manualmente en fase de desarrollo en lugar de lotear automáticamente en la fase de lanzamiento, ya que las dependencias del proyecto de cambio/actualización (ya sea su propio o tercero) a veces pueden introducir errores o incompatibilidad y romper su proyecto, que generalmente necesita la atención del desarrollador. y solucionarlos antes de hacer la versión final.

En otras palabras, la resolución de la dependencia no es una tarea que deba hacerse en la fase de lanzamiento; además, no es una tarea que deba realizarse automáticamente sin la atención del desarrollador.

+0

Totalmente de acuerdo contigo –

Cuestiones relacionadas