2011-09-13 11 views
123

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 compilación anterior, aunque los archivos del artefacto más reciente deberían haberse actualizado.¿Cómo borras el caché de Apache Maven?

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

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

+2

¿Has probado la bandera '-U' que actualizará los artefactos? –

+2

¿Puedes dar más detalles? ¿Los dependientes no se actualizan en la guerra? Si es así, ¿los dependientes tienen versiones SNAPSHOT? – Raghuram

+0

¿Es un proyecto multimodular? ¿Has comprobado el número de versión de los módulos depdendent? ¿Podrías reproducirte? 'mvn clean install' puso los nuevos artefactos en el repositorio local? – palacsint

Respuesta

130

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

+4

Ya lo intenté, no funcionó. Gracias por la sugerencia, sin embargo. – MetroidFan2002

+124

¿Cómo puede no funcionar? –

+0

@ om-nom-nom: ¡Gracias por la edición! – palacsint

10

Ha marcado/cambiado la configuración updatePolicy para sus repositorios en su settings.xml.

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

Intente configurarlo en always.

+1

Posible ayuda para tratar con esto de alguna manera ... No tengo' < updatePolicy> 'en mi pom.xml, pero hay' ' –

5

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 con la mano (como se indica por palacsint arriba) en el directorio /username/.m2, re-indexar los archivos de la siguiente manera:

Ir a Windows-> Preferencias> Maven- > Menú de configuración del usuario.

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

112

Para limpiar la memoria caché local intente utilizar el complemento de dependencia.

  1. mvn dependency:purge-local-repository: Este es un intento de eliminar los archivos de repositorio local, pero siempre se va y se llena el repositorio local después las cosas se han eliminado.
  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 repositorio local, y el primero si solo quieres descartar el repositorio local y obtener las dependencias nuevamente.
+4

¿Cuál es la diferencia entre ellos? –

+8

El primero es un intento de eliminar los archivos del repositorio local pero siempre va y llena el repositorio local una vez que se han eliminado las cosas. El segundo evita la resolución de las dependencias pero parece que todavía va a la red a veces. Third fue agregado por Paweł Prażak y parece funcionar bien. Usaría el tercero si quieres vaciar el repositorio local, y el primero si solo quieres descartar el repositorio local y obtener las dependencias nuevamente. –

+0

¿dónde realizamos esta acción? CMD no sabe mvn ... – deadManN

0

Yo haría lo siguiente:

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

Las banderas indican Maven no tratar de resolver las dependencias o golpear la red. Elimina lo que ves localmente.

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

+0

Lo siento, no entiendo la pregunta: / –

Cuestiones relacionadas