¿Cómo eliminar el archivo jar del repositorio maven local que se agregó con install: install-file?

122
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar

Utilizo el comando anterior para instalar jar local en el repositorio local de maven. Ahora tengo la dependencia del repositorio de Maven. Quiero eliminar esto del repositorio local. ¿Cómo limpiarlo?

usuario1844840
fuente

Respuestas:

107

Si bien hay un comando maven que puede ejecutar para hacer esto, es más fácil eliminar los archivos manualmente del repositorio.

Me gusta esto en Windows Documents and Settings\your username\.m2o $HOME/.m2en Linux

Lagz0ne
fuente
10
Eliminaría solo el .m2/repository directory. Un compañero de trabajo ha eliminado el directorio .m2 antes y causa problemas porque en nuestro proyecto tenemos que modificar el settings.xmlarchivo.
Tiris
77
Tenga en cuenta que al eliminar el .m2/repositorydirectorio también eliminará todos los archivos de plugin maven. Mientras que con el purge-local-repositorycomando está eliminando solo dependencias.
collinhaines
3
La estructura del directorio bajo .m2/repositoryestá organizada por el ID del grupo Maven, por lo que puede eliminar el subdirectorio correspondiente al artefacto que desea eliminar.
Kevin Krumwiede
124

Aunque la eliminación de archivos funciona manualmente, hay una forma oficial de eliminar las dependencias de su proyecto de su repositorio local (caché) y, opcionalmente, volver a resolverlas desde repositorios remotos.

El objetivo purge-local-repository, en el complemento de dependencia estándar de Maven, eliminará las dependencias instaladas localmente de este proyecto de su caché. Opcionalmente, puede volver a resolverlos desde los repositorios remotos al mismo tiempo.

Esto debe usarse como parte de una fase del proyecto porque se aplica a las dependencias para el proyecto que lo contiene. También las dependencias transitivas se eliminarán (localmente) también, de forma predeterminada.

Si desea eliminar explícitamente un solo artefacto del caché, úselo purge-local-repositorycon el manualIncludeparámetro Por ejemplo, desde la línea de comando:

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..."

La documentación implica que esto no elimina las dependencias transitivas de forma predeterminada. Si está ejecutando con una ubicación de caché no estándar, o en múltiples plataformas, estas son más confiables que eliminar archivos "a mano".

La documentación completa está en la especificación del complemento de dependencia de maven .

Nota : Las versiones anteriores del dependencycomplemento Maven tenían un manual-purge-local-repositoryobjetivo, que ahora (versión 2.8) está implícito en el uso de manualInclude. La documentación para manualIncludes(con un s) también debe leerse.

Steve Powell
fuente
No creo que esto funcione para .jarcorreos electrónicos que no se descargaron de Maven Central u otro repositorio. Cuando ejecuto este comando, elimina todos los .jarcorreos electrónicos que se descargaron automáticamente, pero cuando llega al .jar[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
correo electrónico
3
En realidad, después de comprobarlo, me di cuenta de que desinstala el .jar, pero aún muestra un error. Por lo tanto, para los correos .jarelectrónicos que se han instalado manualmente, recomendaría eliminar manualmente en lugar de usar este método, porque Maven crea algunos archivos extraños como yourjar.jar.lastUpdatedy yourjar.pom.lastUpdatedque es posible que deba eliminar manualmente de todos modos. Pero si maven administra todas las dependencias automáticamente, esta es una excelente manera de desinstalar las dependencias.
stiemannkj1
Este enfoque también requiere un proyecto maven para ejecutar el comando. Esto no parece funcionar si ejecutó el comando de instalación que el OP especificó en el contexto de decir una compilación de Gradle.
jdonmoyer
19

Al menos en la versión actual de Maven, debe agregar el modificador -DreResolve = false si tiene la intención de eliminar las dependencias de su repositorio local sin volver a descargarlas.

mvn dependency:purge-local-repository -DreResolve=false

elimina las dependencias sin descargarlas nuevamente.

rob2universe
fuente
¿podría echar un vistazo? stackoverflow.com/questions/58937713/…
gstackoverflow
12

Elimine todas las cosas (jar, pom.xml, etc.) de su ~/.m2/repository/phonegap/1.1.0/directorio local si está utilizando un sistema operativo Linux.

Abimaran Kugathasan
fuente
Cuando elimino el jar de esa manera, "vuelve a descargar" el jar de la carpeta anterior. Puede haber referencias que también deben eliminarse.
Antonio Sesto
0

Me enfrenté al mismo problema, revisé todas las sugerencias anteriores, pero nada funcionó. Finalmente eliminé las carpetas .m2 y .ivy y funcionó para mí.

Nagesh Vashist
fuente
-5
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard
Kent Yao
fuente
44
Esta respuesta podría o no resolver el problema, pero ¿qué tal si agrega alguna explicación a su respuesta? Esto podría ayudar al OP a comprender lo que está tratando de mostrarle.
Gerhard
2
Esta respuesta no está relacionada con el problema: muestra la configuración del repositorio git en la carpeta .m2 y restablece como repositorio git.
lquitadamo