Forzar la descarga de la dependencia de lanzamiento utilizando Maven


136

Estoy trabajando en un proyecto con dependencia X. X, a su vez, depende de Y.

Solía ​​incluir explícitamente Y en el pom de mi proyecto. Sin embargo, no se usó y para hacer las cosas más limpias, en cambio lo agregué al pom de X como una dependencia. X está marcado como una dependencia de lanzamiento.

El problema es que después de eliminar Y del pom de mi proyecto y agregarlo al pom de X, mi proyecto no lo está recuperando mvn -U clean package. Sé -U instantáneas de actualización pero no lanzamientos.

Entonces, sin eliminar el directorio ~ / .m2 / repository, ¿cómo puedo forzar una nueva descarga de X's pom? Además, intenté correr dependency:purge-local-repositoryy tampoco funcionó.


Has etiquetado las preguntas como "maven-2". La opción -U se agregó en Maven 3 para resolver este problema. Sugeriría actualizar.
Mark O'Connor

Solo desde una perspectiva metodológica, si cambia Xel pom, entonces debería constituir una nueva versión, incluso si es solo un cambio de número de parche: 1.3-> 1.3.1. Entonces, eso eliminaría este problema desde el primer momento.
jpaugh

Sin embargo, todavía es posible tener problemas similares con las instantáneas también, por lo que es bueno tener algunas respuestas.
jpaugh

Respuestas:


166

No puede hacer que Maven vuelva a descargar dependencias, pero lo que puede hacer en su lugar es purgar las dependencias que se descargaron incorrectamente usando mvn dependency:purge-local-repository

Ver: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html


11
¿No es ese tipo de lo mismo?
Svish

2
No requiere acceso al sistema de archivos, lo que podría ser un problema si solo configura trabajos de compilación (para un sistema CI, por ejemplo).
Oliver Drotbohm

2
Si se ejecuta un proyecto múltiple mvn dependency:purge-local-repository clean package, puede ser que un proyecto elimine la misma dependencia en el repositorio local mientras otro proyecto ejecuta la compilación. ¿Como evitar?
vikyd

55

Acabo de eliminar mi ~ / .m2 / repositorio y eso obligó a una nueva descarga;)


1
Ayuda como último recurso, tuve un proyecto donde eclipse y maven estaban un poco "confundidos". Simplemente eliminar la carpeta .m2 hizo que el proyecto se compilara y ejecutara correctamente.
Leonardo

55
También es posible eliminar selectivamente las dependencias que sabe que deben actualizarse desde el interior del repositorio. Una purga manual, por así decirlo.
jpaugh

41

¡Creo que seguir el comando puede ayudarte!


mvn -U clean install

44
liberar dependencia usando Maven en la pregunta. No, esto podría haber sido mejor un comentario.
Naman

31

Gracias a la respuesta de Ali Tokmen. Logré forzar la eliminación de la dependencia local específica con el siguiente comando:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

Con esto, se elimina utilsde mi .m2 / repositorio y siempre vuelve a descargar la utilsdependencia JAR cuando ejecuto mvn clean install.


1
Simplemente necesitaba una forma de obligar a Maven a volver a descargar una dependencia. Esta es la única respuesta que realmente hace eso, mientras que otras respuestas sugieren eliminar todo. Gracias
smac89

14

Haga clic derecho en el proyecto-> Maven -> Actualizar proyecto y marque las casillas de verificación como en la captura de pantalla. También actualizará los lanzamientos :)

ingrese la descripción de la imagen aquí


55
Sería bueno saber cómo implementaron esa parte "/ Lanzamientos".
Ulises Layera

Gracias por esto justo lo que necesitaba.
JamesG

12
mvn clean install -U

-U significa forzar la actualización de dependencias.

Si desea actualizar una sola dependencia sin limpiar o -U, puede eliminarla de su repositorio local y luego compilar.


Nuevamente, esto solo vuelve a descargar las dependencias SNAPSHOT.
Zardoz89

6

Cuando lo agregó a X, debería haber incrementado el número de versión de X, es decir, X-1.2.
Luego, X-1.2 debería haberse instalado / implementado y debería haber cambiado la dependencia de sus proyectos en X para depender de la nueva versión X-1.2


6

Si conoce la identificación del grupo X, puede usar este comando para volver a descargar todo Xy sus dependencias

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

Hace lo mismo que las otras respuestas que proponen usar dependency:purge-local-repository, pero solo elimina y vuelve a descargar todo lo relacionado con X.


4

Si realmente desea forzar la descarga de todas las dependencias, puede intentar reiniciar todo el repositorio de Maven. Como en este artículo ya descrito, puede usar:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

3

Simplemente elimine ~ / .m2 / repository ..... / actual_path donde viene el LOC no válido ya que obliga a volver a descargar los archivos jar eliminados. No elimine toda la carpeta del repositorio, en su lugar, elimine la carpeta específica de donde proviene el error.


0

Eliminarlo ~/.m2/repositoryresolverá su problema. Pero, si aún necesita conservar el viejo ~/.m2/repository, simplemente puede cambiar temporalmente la ruta local de Maven.

Si está trabajando en IntelliJ, simplemente vaya a Configuración de Maven y cambie la ruta del Repositorio local a otro lugar. Es posible que deba marcar la casilla de verificación de anulación cerca de allí.

ingrese la descripción de la imagen aquí


-1

La mayoría de las respuestas proporcionadas anteriormente resolverían el problema.

Pero si usa IntelliJ y desea que lo arregle automáticamente, vaya a Configuración de Maven.

Compilación, ejecución, implementación -> Herramientas de compilación -> Maven

ingrese la descripción de la imagen aquí

Desactivar trabajo sin conexión

Habilitar siempre actualizar instantáneas (cambiar cuando sea necesario)


1
Le agradecería si también puede compartir la razón del voto negativo mientras lo hace. Gracias.
Abhishek Nandgaonkar

1
Presumiblemente, debido a que las instantáneas no son lanzamientos, esto no resuelve el problema.
soru

-2

Vaya a la ruta de compilación ... elimine la biblioteca existente de maven que agregó ... haga clic en agregar biblioteca ... haga clic en dependencias administradas de maven ... luego haga clic en la configuración del proyecto maven ... marque la casilla de verificación resolver dependencias de maven ... descargará todo dependencias de Maven


2
Esto supone el uso de algunos IDE, una suposición no respaldada por la pregunta, ¡y ni siquiera especificó qué IDE!
Phil
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.