Maven / Nexus - Actualización automática de dependencia -- java campo con maven campo con jenkins campo con nexus camp Relacionados El problema

Maven/ Nexus - Automatic Dependency Update


2
vote

problema

Español

Estoy teniendo un problema y me preguntaba si hay alguna forma de hacer esto.

Esencialmente, mi equipo mantiene un "núcleo" que contiene código común que se usa en todos nuestros proyectos. Naturalmente, utilizamos Maven para administrarlo en nuestros proyectos, pero se ha producido un problema. Esencialmente, después de actualizar el "núcleo", tenemos a Jenkins configurados para construirlo y desplegarlo en un repositorio privado de Nexus. Todo esto funciona bien.

El problema que estoy teniendo es que estos cambios que aplicamos generalmente son para agregar algo que sucedimos para perderse o mover algo que encontramos que le reescamos a menudo al "núcleo". Sin embargo, Maven toma tiempo para actualizar las dependencias (a menos que terminemos completamente el caché local de Maven, que sea menos que lo ideal). Así que la pregunta que tengo es cómo puedo conseguir esto en todo el lugar donde Maven "automáticamente" (podría estar en el clic de un botón o el uso de un comando [Actualmente, intentando actualizarlo a través de métodos normales, no la actualice] ) Actualizar el repositorio local. Actualmente estamos utilizando el repositorio de "liberaciones" en lugar de las "instantáneas", pero, por supuesto, podemos cambiar si es necesario.

¿Hay alguna manera de lograr esto?

Original en ingles

I'm having a bit of an issue and was wondering if there is any way to do this.

Essentially, my team maintains a "core" that contains common code that is used across all of our projects. Naturally, we used Maven to manage it across our projects, but an issue has come up. Essentially, after updating the "core", we have Jenkins set up to build it and deploy it to a private Nexus repository. This all works fine.

The issue I am having is that these changes we apply are usually to add something we happened to miss or move something that we find to be rewriting often to the "core". However, Maven takes time to update the dependencies (unless we completely flush the local Maven cache, which is less than ideal). So the question I have is how can I get around this to where Maven will "automatically" (it could be at the click of a button or the use of a command [currently trying to update it through normal methods don't update it]) update the local repository. We are currently using the "Releases" repository rather than the "Snapshots", but of course we can change if needed.

Is there any way to achieve this?

           
   
   

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

El uso de la misma versión para el artefacto actualizado se enfrenta a las expectativas de Maven: se supone que la versión de liberación (no instantánea) es definitiva y sin cambios, debe identificar de manera única el artefacto ensamblado. ¡Cambiar el código de versión de la versión sin actualizar la versión puede producir compilaciones irrespetables!

Puede usar versiones de instantáneas en su lugar, o construir el núcleo como una nueva versión cada vez y actualizar las dependencias donde sea necesario o usar RANGO DE VERSIONES - LIKE [1.5,) .


Personalmente, usaría versiones de instantáneas si el núcleo cambia a menudo y las liberaciones de proyectos son relativamente raras (tenga en cuenta que debe construir una versión de lanzamiento del núcleo cuando lo libere alguno de los proyectos dependientes), y usaría nuevos Lanzamiento del núcleo con nueva versión cada vez que el núcleo es relativamente estable en comparación con la frecuencia con la que se liberan los proyectos dependientes.

Si usa la gama de versiones para definir la dependencia del núcleo, debe actualizar el rango en los proyectos dependientes cada vez que realice un cambio de rotura de API en Core (cuando haga esto, los proyectos que dependen de la API antigua ahora deben hacer referencia a la versión Rango que se detiene a corta de esta nueva versión (o, a saber, la versión anterior en lugar de rango), y los proyectos que dependen de la nueva API deben usar el rango de versión que comienza con la versión actual).

 

Using the same version for updated artifact goes against Maven's expectations - the release (non-snapshot) version is assumed to be final and unchanging, it should uniquely identify the assembled artifact. Changing the release version code without updating version can produce irrepeatable builds!

You could use snapshot versions instead, or build the core as new version every time and either update the dependencies where needed or use version range - like [1.5,).


Personally, I would use SNAPSHOT versions if the core changes often and project releases are relatively rare (keep in mind you should then build a release version of the core whenever you release any of the depending projects!), and would use new core release with new version every time if the core is relatively stable compared to how often the depending projects are released.

If you use version range to define the core dependency, you should update the range in the depending projects whenever you make an API-breaking change in core (when you do this, the projects that depend on old API must now reference version range that stops short of this new version (or namely the previous version instead of range), and projects dependent on the new API must use version range starting with the current version).

 
 
 
 
1
 
vote

Como ya otros dicen que usar la versión de Samve para obtener artefactos modificados no tiene sentido no solo en Maven también en general. Si hace algún desarrollo en su componente central, que es utilizado por un número mayor de otros proyectos de los que su componente debe tener una liberación habitual, lo que significa que comienza con 1.0.0 .. haciendo algunas correcciones de errores que podría obtener < CÓDIGO> 1.0.1 o alguna otra mejora Puede usar 1.1.0 etc. Así que ahora a los proyectos que consumen. Allí puede usar versiones-Maven-Plugin para actualizar las dependencias. Aparte de eso, si lo ha hecho de la manera correcta en MAVE, ha definido las dependencias con el núcleo en una ubicación central a través de la mancha de dependencia que la versión debe ser solo una única ubicación que signifique actualizar es simplemente actualizar una sola línea en un POM, así que yo No vea un problema real aquí y esto también se puede hacer a través de versions-maven-plugin y un paso más es hacer esto a través de un trabajo de Jenkins ... y, por supuesto, el camino durante el desarrollo pesado en el núcleo. podría usar un IItem5 referencia ...

Una de las fundaciones en Maven y también otras herramientas como esa es que una versión de lanzamiento es inmutable.

 

As already others say using the samve version for a changed artifacts does not make sense not only in Maven also in general. If you do some development on your core component which is used by a larger number of other projects than your component should have a usual releases which means you start with 1.0.0..doing some bug fixes you might get 1.0.1 or some other enhancement you could use 1.1.0 etc. So now to the consuming projects. There you can use versions-maven-plugin to update the dependencies. Apart from that if you have done it the right way in Mave you have defined the dependencies to the core in a central location via dependencyManagement which the version should be only a single location which means updating is simply updating a single line in a pom so i don't see a real issue here and this can be done via versions-maven-plugin as well and an further step is to do this via a jenkins job...And of course the way during heavy development in core you could use a -SNAPSHOT reference...

One of the foundations in Maven and also other tools like that is that a release version is immutable.

 
 

Relacionados problema

68  El complemento de liberación de Maven falla: los artefactos de origen se despliegan dos veces  ( Maven release plugin fails source artifacts getting deployed twice ) 
Estamos usando el complemento de liberación Maven en Hudson y tratando de automatizar el proceso de liberación. El lanzamiento: preparar funciona bien. Cuando...

2  excluyendo las dependencias de los padres al ejecutar el análisis de sonar  ( Excluding parent dependencies when running sonar analysis ) 
Estoy tratando de usar Sonarqube en un complemento de repositorio de Nexus. Al crear un simple proyecto de Maven y llame a sonar:sonar -Dsonar.scm.pro...

1  Nexus OSS 3.3.0-01 sigue cayendo  ( Nexus oss 3 3 0 01 keeps falling over ) 
Mi equipo ha estado usando Nexus OSS versión 2 (actualmente el 2.14.2-01) durante mucho tiempo sin ningún tipo de altura y nos gusta. Para otro proyecto, ne...

1  Configure el contexto de WebApp en Nexus OSS 3  ( Configure webapp context in nexus oss 3 ) 
Me gustaría cambiar el contexto de WebApp de una instalación de Nexus OSS 3 para ejecutarse en http: // localhost: 8081 / nexus en lugar de http: // localh...

10  Maven no recogiendo el nombre de usuario para el repositorio de la configuración  ( Maven not picking username for repository from settings xml ) 
Tengo esto en mi ~ / .m2 / Settings.XML: <servers> <server> <username>deployment</username> <password>xxxxxx</password> <id>cen...

2  Nexus3 Configure LDAP con API  ( Nexus3 configure ldap with api ) 
Actualmente estoy tratando de escribir un script para configurar LDAP en My Nexus 3 Instancia. He echado un vistazo a este post y estoy corriendo con alguno...

1  Conexión entre contenedor DOCER y Nexus en la máquina host  ( Connection between docker container and nexus in host machine ) 
Estoy tratando de construir una imagen de Docker que pudo usar un repositorio de Nexus, instalado en mi computadora portátil, cuando ejecuta el comando RUN m...

0  ¿Es posible tener varios archivos a los que se hace referencia a un Maven Artifactid?  ( Is it possible to have several files referenced by one maven artifactid ) 
Generalmente (ya vi tal) el artefacto Maven es un frasco. ¿Es posible hacer el artefacto de Maven como varios frascos? Actualmente tengo que agregar a Servera...

0  Recuperación de artefactos de distribución clasificados de Nexus  ( Retrieving classified distribution artifacts from nexus ) 
Me gustaría proporcionar distribuciones específicas de la plataforma de mi complejo proyecto multi módulo usando el complemento Maven-Assembly. Tengo una dist...

0  ¿Cómo obtener la versión "última" del artefacto?  ( How to get latest artifact version ) 
Me pregunto si Nexus proporciona API (Lamentablemente, no encontré ningún ejemplo útil) para hacer tal cosa. Entonces, en mi ID de grupo ( com.testtools ) o...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos