2012-04-10 10 views
5

estoy creando .ear utilizando MavenComo incluir dependencias en un oído sin versión en el nombre del archivo

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-ear-plugin</artifactId> 
    <version>2.6</version> 
    <configuration> 
    <finalName>wsformatter-ear</finalName> 
    <includeLibInApplicationXml>true</includeLibInApplicationXml> 
    <version>1.4</version> 
    </configuration> 
</plugin> 

Todas las dependencias de la .ear parecerse joda-tiempo-1.6.2.jar, commons-io-1.4.jar etc.

Pero también tengo dependencias que quiero tener sin la versión. Por ejemplo, ¿cómo puedo hacer, que la dependencia slf4j-api-1.5.6.jar se verá como slf4j-api.jar en mi .ear

+0

¿Por qué necesitarías eso? – weekens

+1

Tengo dependencia de mis otros proyectos. Las versiones de esos proyectos cambian muy a menudo – Ilya

Respuesta

1

Básicamente, usted no puede (sin alguna tipo de pirateo en la configuración de los complementos de Maven) e incluso si pudiera, simplemente no lo haga. El enfoque y la filosofía de Maven sobre las dependencias es estricto y directo, incluida la convención predeterminada de tener una versión como sufijo de nombre de archivo. Inmediatamente dice qué versión del artefacto se usa. Si dependes de algún artefacto que a menudo se libera, tienes que actualizar su versión en el POM de tu EAR de todos modos, por lo que su "propagación" no es de alguna manera de acción automática. Por lo tanto, no veo ningún problema con este sufijo de nombre de archivo.

Si esta necesidad de cambio frecuente es problemática para usted, ¿debería considerar modificar de alguna manera el ciclo de desarrollo de este artefacto que se lanza con frecuencia? ¿Probablemente puede extender un poco el tiempo que pasa durante la misma versión de SNAPSHOT? Incluso si realiza frecuentes lanzamientos "internos" (como nightbuilds), Maven no lo obliga a cambiar su versión en cada versión (en el sentido de Maven Release Plugin). Puede quedarse con alguna versión de SNAPSHOT todo el tiempo que desee. Incluso en procesos ágiles (o Kanban) realmente rápidos, este tipo de lanzamiento "real" generalmente ocurre cada pocas semanas y es lo suficientemente largo como para ser manejable.

Al final, no es así, no te ayudaré (o algo así) o no quiero. Solo creo que estás tratando de ir en contra de Maven. Maven es realmente poderoso si aceptas y aceptas su enfoque y sus convenciones. Según mi experiencia, tratar de evitar esto significa problemas (tarde o temprano). Ya he visto muchos proyectos que tenían configuración de Maven-like-Ant y muchos desarrolladores quejándose de que Maven apesta. Después de descifrar las cosas, les dije: "Maven no apesta, tus POM sí".

+0

Una razón para hacer esto es la siguiente: Los números de versión rompen las referencias en persistence.xml porque necesitan hacer referencia a un nombre de archivo concreto que es imposible de conocer con la mediación de dependencia de Maven (no puedo Asegúrese de que mi other-1.0.0.jar sea realmente parte de la oreja, tal vez sea reemplazado por other-1.0.1.jar). –

16

Estoy totalmente de acuerdo con Michal Kalinowski. Pero caí en la misma situación, bueno, en realidad una situación inversa: alguien configuró el proyecto para excluir las versiones en el EAR final y yo estaba buscando la forma de cancelarlo, porque estaba en contra del estilo de vida del maven, así que ' he buscado en la web y encontré esta misma pregunta, pero la respuesta que encontré en el código mismo. Se puede utilizar:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-ear-plugin</artifactId> 
    <configuration> 
     <version>5</version> 
    <defaultLibBundleDir>lib</defaultLibBundleDir> 
    <fileNameMapping>no-version</fileNameMapping> 
    </configuration> 
</plugin> 

La línea con la etiqueta fileNameMapping es lo que quiere. Espero que esto pueda ayudar.

Cuestiones relacionadas