¿Cómo borras el caché de Apache Maven?

Recientemente, Apache Maven parece tener problemas de almacenamiento en caché. Realizar instalaciones limpias en nuestros proyectos utilizando Windows Vista o Windows 7 a veces produce artefactos con los mismos datos que una comstackción anterior, aunque los archivos del artefacto más reciente deberían haberse actualizado.

¿Hay alguna manera de borrar este caché para obligar maven a activar siempre una construcción limpia del artefacto local que debe construirse?

En particular, tenemos problemas para crear una aplicación web con el complemento de guerra. La versión de Maven es 3.0.3. La versión del complemento War es 2.1.1.

Elimine los artefactos (o el repository local completo) de c:\Users\\.m2\repository a mano.

Para limpiar el caché local intente usar el complemento de dependencia.

  1. mvn dependency:purge-local-repository : este es un bash de eliminar los archivos del repository local, pero siempre va y llena el repository local una vez que se han eliminado las cosas.
  2. mvn dependency:purge-local-repository -DreResolve=false : Esto evita la resolución de las dependencias, pero parece que todavía va a la red a veces.
  3. mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false : Esto fue agregado por Paweł Prażak y parece funcionar bien. Usaría el tercero si quieres vaciar el repository local, y el primero si solo quieres descartar el repository local y obtener las dependencias nuevamente.

¿Ha revisado / cambiado la configuración de updatePolicy para sus repositorys en su settings.xml ?

Este elemento especifica con qué frecuencia deben intentar las actualizaciones. Maven comparará la marca de tiempo de POM local (almacenada en el archivo maven-metadata del repository) con el control remoto. Las opciones son: siempre, diariamente (predeterminado), intervalo: X (donde X es un número entero en minutos) o nunca.

Intenta configurarlo para always

Esto funciona en Spring Tool Suite v 3.1.0.RELEASE, pero supongo que también está disponible en Eclipse.

Después de eliminar los artefactos a mano (según lo indicado por palacsint arriba) en el directorio /username/.m2, vuelva a indexar los archivos haciendo lo siguiente:

Vaya a Windows-> Preferences-> Maven-> User Settings menu.

Haga clic en el botón “Reindex” junto al cuadro de texto “Repositorio local”. Haga clic en “Aplicar”, luego en “Aceptar” y listo.

Yo haría lo siguiente:

 mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end 

Las banderas le dicen a maven que no intente resolver dependencias o que acceda a la red. Elimina lo que ves localmente.

Y por si fuera poco, ignore los errores ( --fail-at-end ) hasta el final. Esto a veces es útil para proyectos que tienen un conjunto de dependencias algo desordenado o que dependen de un repository interno algo desordenado (sucede).

Como han señalado algunas respuestas, a veces realmente desea eliminar el repository local por completo, por ejemplo, puede haber algunos artefactos que no se pueden purgar, ya que el pom ya no los referencia.

Si desea tener esta eliminación incrustada en una fase de maven, como por ejemplo clean , puede usar maven-clean-plugin y acceder al repository a través de la configuración, por ejemplo:

   false org.apache.maven.plugins maven-antrun-plugin 1.1   clean  run    Base clean is attached to deleting local maven cache ${settings.localRepository}       false maven-clean-plugin 3.1.0    ${settings.localRepository}