Las descargas de Maven tienen .lastUpdated como extensión

81

Tengo una configuración de Eclipse con m2eclipse y subversive. He importado un proyecto maven2 de svn. Pero recibo el mensaje de error de que faltan un montón de artefactos (por ejemplo: Missing artifact org.springframework: spring-test: jar: 3.0.1.RELEASE: test).

Si miro en mi repositorio, veo los archivos jar allí, pero tienen una extensión adicional .lastUpdated. ¿Por qué maven agrega .lastUpdated a los frascos? Y lo que es más importante: ¿cómo puedo solucionar esto?

No se menciona el tipo lastUpdated en mis POM.

user303158
fuente

Respuestas:

59

Estos archivos le indican a Maven que intentó obtener el archivo mediante descarga, pero no tuvo éxito. Para ahorrar ancho de banda, no volverá a intentarlo hasta que haya transcurrido un cierto período de tiempo codificado en el archivo. El interruptor de línea de comando -U fuerza a maven a realizar la actualización antes del período de reintento. Esto puede ser necesario si intentó compilar mientras estaba desconectado de la red.

El método para eliminar los archivos funciona con la mayoría de las versiones de maven, pero como los archivos son recuerdos internos de maven, no recomendaría este método. No hay garantía de que esta información no sea referenciada o guardada en otro lugar y dicha manipulación puede dañar el sistema.

Jörn Guy Süß
fuente
Intenté mvn -U clean, pero no solucionó el problema. ¿Me estoy perdiendo de algo?
MiguelMunoz
Su última declaración en el primer párrafo me parece una contradicción como novato en el tema. Esto puede ser necesario si intentó construir mientras estaba desconectado de la red. Si intento mientras estoy desconectado, -U intentará descargar desde un repositorio remoto y fallará, según mi interpretación de lo que dijo.
Sandeepan Nath
Quise decir, "configurar -U puede ser necesario si ha intentado construir mientras estaba desconectado de la red, y el marcador se ha configurado".
Jörn Guy Süß
14

Como dijo rperez , suelo borrar todos esos .lastUpdatedarchivos. En Linux, he creado un pequeño script para que sea sencillo :

find -name \*.lastUpdated -exec rm -fv {} +

Simplemente cree un archivo con el contenido anterior y colóquelo en su repositorio local de Maven. Normalmente lo será ~/.m2/repository.

Rubens Mariuzzo
fuente
2
en zsh:rm ~/.m2/repository/**/*.lastUpdated
Dacav
3
También se puede simplemente usar del hallazgo deletebandera para eliminar los archivos que encuentre, en lugar de execing rmen los resultados. Por ejemplo,find ~/.m2 -name *.lastUpdated -delete
spaaarky21
7

Instalé Maven2 y ejecuté mvn compile desde la línea de comando. Esto parece haber resuelto el problema.

user303158
fuente
Compilar usando la línea de comando resolvió este problema para mí. Creo que esto podría ser un problema de m2eclipse.
TAN70
1
Ejecutándome en Windows 7 Professional SP 1, en 2017, tuve problemas similares con el complemento Eclipse y lo abandoné en favor de la CLI, que brinda informes mucho más completos y utilizables que puedo guardar, importar a Excel y Genere todo tipo de informes útiles que cubran paquetes faltantes, archivos que no se descargaron, POM y JAR no emparejados y otras estadísticas útiles.
David A. Gray
2

Si encuentra este problema y está utilizando Nexus, es posible que tenga una regla de enrutamiento definida, que es incorrecta. Lo golpeé yo mismo y los archivos que estaba descargando tenían el nombre correcto, en las URL correctas que estaba viendo, pero todos tenían la .lastUpdatedextensión y un mensaje de error como contenido.

carlspring
fuente
1

es posible que tenga un problema con algunos de los artefactos que se recuperarán del repositorio. por ejemplo, Spring Framework tiene su propio repositorio. esta extensión se agrega cuando el artefacto no se puede descargar por completo. agregue el repositorio de Spring Framework a su pom o settings.xml, elimine la carpeta que incluye los frascos rotos y comience de nuevo

rperez
fuente
De acuerdo. En lugar de un pom o jar válido, generalmente un pom o jar que termina con un lastUpdate tiene un tamaño de solo 2k, cuyo contenido se parece más a un registro de errores. Por lo general, es el resultado de "no se pudieron recopilar las dependencias en ..."
Tiina
Esa es una forma interesante de pensar en ellos; Siempre he pensado en ellos como entidades separadas (archivos actualizados por última vez), en lugar de los JAR o POM sobre los que informan. De la misma manera, pienso en MyDotNetAssembly.exe.config como un tipo de archivo distinto de MyDotNetAssembly.exe.
David A. Gray
0

Abra su terminal, navegue hasta el directorio del proyecto de su Eclipse y ejecute:

mvn install

Si mvn installno actualiza sus dependencias, llámelo con un interruptor para forzar la actualización:

mvn install -U

Este es un enfoque mucho más seguro en comparación con la manipulación de archivos maven al eliminar ".lastUpdated".

Edward Quijote
fuente
1
Tengo el mismo problema y mvn install -Uno ayudó. mvn clean installno hizo el trabajo también
roxch
0

Utilice este comando dentro del directorio .m2 / repository para cambiar el nombre de todos los archivos:

for file in `find . -iname *.lastUpdated`; do renamed=$(echo $file | rev | cut -c13- | rev); echo renaming: $file to $renamed; mv $file $renamed; done

Esto es útil para no volver a descargar todas las fuentes.

Esto no funciona ... El .jar se pierde. :(

Adriano Ferreira de Paula
fuente