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ó.

volni
fuente
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

Ali Tokmen
fuente
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;)

Ryan Angilly
fuente
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
Ricardo
fuente
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.

pez cielo
fuente
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í

nanosoft
fuente
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.

ArpitBora
fuente
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

Crowne
fuente
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.

smac89
fuente
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
Bart den Haak
fuente
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.

Saurabh Oza
fuente
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í

Tharindu Sathischandra
fuente
-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)

Abhishek Nandgaonkar
fuente
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

SagaramVijay
fuente
2
Esto supone el uso de algunos IDE, una suposición no respaldada por la pregunta, ¡y ni siquiera especificó qué IDE!
Phil