Con Maven, ocasionalmente encuentro un artefacto que proviene de un repositorio de terceros que aún no he construido o incluido en mi repositorio.
Recibiré un mensaje de error del cliente de Maven diciendo que no se puede encontrar un artefacto
Si no se encuentra org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0
http://myrepo:80/artifactory/repo
se almacenó en caché en el repositorio local, la resolución no se volverá a intentar hasta que haya transcurrido el intervalo de actualización de MyRepo o se hayan forzado las actualizaciones -> [ Ayuda 1]
Ahora, yo entiendo lo que esto significa, y simplemente puede volver a ejecutar mi mando con -U
, y cosas por lo general los finos trabajos de ahí en adelante .
Sin embargo, considero que este mensaje de error es extremadamente poco intuitivo y estoy tratando de evitar algunos dolores de cabeza a mis compañeros de trabajo.
Estoy tratando de averiguar si hay algún lugar donde pueda modificar esta update interval
configuración.
- ¿Es lo
update interval
que se menciona en este mensaje de error una configuración del lado del cliente o del servidor? - Si es del lado del cliente, ¿cómo lo configuro?
- Si es del lado del servidor, ¿alguien sabe cómo / si Nexus / Artifactory expone esta configuración?
fuente
pom.xml
.Respuestas:
Solía resolver este problema eliminando el directorio correspondiente que no pudo descargar el artefacto en mi repositorio local. La próxima vez que ejecute el comando maven, la descarga del artefacto se activa nuevamente. Por lo tanto, diría que es una configuración del lado del cliente.
Lado del Nexus (lado del repositorio del servidor), este problema se resuelve configurando una tarea programada. Del lado del cliente, esto se hace usando
-U
, como ya señaló.fuente
puede eliminar el directorio de artefactos fallidos correspondiente en su repositorio local. Y también puedes usar simplemente
-U
en el objetivo. Hará el trabajo. Esto funciona con maven 3. Por lo tanto, no es necesario degradar a maven 2.fuente
~/.m2/settings.xml/<repositories>
para resolver este problema con las opciones -UTuve un problema relacionado, pero la respuesta de Raghuram ayudó. (Todavía no tengo suficiente reputación para votar su respuesta). Estoy usando Maven incluido con NetBeans, y estaba obteniendo el mismo "... fue almacenado en caché en el repositorio local, la resolución no se volverá a intentar hasta que haya transcurrido el intervalo de actualización de nexus o se hayan forzado las actualizaciones -> [Ayuda 1]" error .
Para solucionar esto, agregué
<updatePolicy>always</updatePolicy>
a mi archivo de configuración (C: \ Archivos de programa \ NetBeans 7.0 \ java \ maven \ conf \ settings.xml)fuente
Lo que sucede básicamente es que, según la política de actualización predeterminada de Maven, Maven buscará los frascos del repositorio a diario, por lo que si durante el primer intento su Internet no funcionara, no intentaría recuperar este frasco nuevamente hasta que pasen 24 horas.
Resolución:
Cualquiera de uso
donde -U forzará la actualización del repositorio
o usar
en su settings.xml
fuente
De acuerdo con la referencia de configuración :
Ejemplo:
fuente
Si bien puede resolver esto con una instalación limpia (anulando cualquier dependencia almacenada en caché) como @ Sanjeev-Gulgani sugiere con
mvn -U clean install
También puede simplemente eliminar la dependencia en caché que está causando el problema con
Ver mvn docs para más información.
fuente
Este error a veces puede ser engañoso. 2 cosas que es posible que desee verificar:
¿Existe un JAR real para la dependencia en el repositorio? Su mensaje de error contiene una URL de dónde está buscando, vaya allí y luego busque la carpeta que coincida con su dependencia. ¿Hay un frasco? Si no, necesita cambiar su dependencia. (por ejemplo, podría estar apuntando a una dependencia principal de nivel superior, cuando debería estar apuntando a un subproyecto)
Si el jar existe en el repositorio remoto, simplemente elimine su copia local. Estará en su directorio de inicio (a menos que haya configurado de manera diferente) en .m2 / repositorio (ls -a para mostrar oculto si está en Linux).
fuente
Si está utilizando Eclipse, vaya a Windows -> Preferencias -> Maven y desactive la casilla de verificación "No actualizar automáticamente las dependencias de los repositorios remotos".
Esto funciona con Maven 3 también.
fuente
Debe eliminar todos los archivos "_maven.repositories" de su repositorio.
fuente
Esto funciona después de eliminar la dependencia relacionada de su repositorio local de Maven
fuente
Si usa Nexus como repositorio proxy, tiene la configuración "No encontrado TTL de caché" con un valor predeterminado de 1440 minutos (o 24 horas). Reducir este valor puede ayudar (Repositorios> Configuración> Configuración de caducidad).
Ver documentación para más información.
fuente
Cómo conseguí este problema
Cuando cambié de Eclipse Juno a Luna, y revisé mis proyectos maven del repositorio de SVN, tuve los mismos problemas al crear las aplicaciones.
Lo que probé? Intenté limpiar el repositorio local y luego actualizar todas las versiones nuevamente usando la opción -U. Pero mi problema continuó.
Luego fui a Ventana -> Preferencias -> Maven -> Configuración de usuario -> e hice clic en el botón Reindex en Repositorio local y espere a que ocurra la reindex.
Eso es todo, el problema está resuelto.
fuente
Para finalmente responder la pregunta del título: Es (una configuración del lado del cliente) en (proyecto, perfil o configuración)
... etiqueta.
Los valores posibles (actualmente, maven: 3.6.0, pero supongo que son compatibles con "versiones anteriores") son:
La evaluación actual (maven 3.6.0) de esta etiqueta se implementa de la siguiente manera:
..con:
... donde
lastModified
está la "marca de tiempo modificada" (archivo local) de un / cada artefacto subyacente.En particular para el
interval:x
entorno::
no son tan estrictos: cualquier personaje "no vacío" podría hacerlo (=
,, ...).
x < 0
deberían ceder a "nunca".interval:0
Asumiría un intervalo "minucioso" (0-59 segundos o más ...).24 * 60
minutos (~ "diario")...ver: DefaultUpdatePolicyAnalyzer , DefaultMetadataResolver # resolveMetadata () y RepositoryPolicy
fuente
Para los usuarios de Intellij , lo siguiente funcionó para mí:
Haga clic derecho en su paquete
y
fuente
Algo relevante ... Me estaba poniendo
Este error fue causado por el uso accidental en
Maven 3
lugar deMaven 2
. Solo pensé que podría ahorrarle tiempo a alguien, porque mi búsqueda inicial en Google me llevó a esta página.fuente
Maven tiene configuraciones de UpdatePolicy para especificar la frecuencia para verificar las actualizaciones en el repositorio o para mantener el repositorio sincronizado con el control remoto.
El siguiente ejemplo de código se puede agregar al archivo de configuración de usuario de maven para configurar updatePolicy.
fuente
If client-side, how do I configure it?
. Esta respuesta no se trata de ninguna función IDE. Es mvn solo la configuración del repositorio. ElupdatePolicy
es el intervalo por el cual el OP pregunta.En mi caso, la solución fue estúpida: solo tenía versiones de dependencia incorrectas.
fuente
Tuve este problema y las descripciones completas propuestas en este me ayudaron a solucionarlo.
El segundo problema declarado fue mi problema. Utilicé un repositorio de terceros que acababa de agregar para la
repository
parte del archivo pom en mi proyecto. Agrego la misma información de repositoriopluginrepository
para resolver este problema.fuente
Tuve un error similar con un artefacto diferente.
Ninguna de las soluciones descritas anteriormente funcionó para mí. Finalmente resolví esto en IntelliJ IDEA por Archivo> Invalidar cachés / reiniciar ...> Invalidar y reiniciar .
fuente
En mi caso tuve múltiples proyectos
Cuando hice "mvn clean install" desde el directorio "domainProject", recibí dicho error.
Cuando hice "mvn clean install" desde el directorio "projectRoot", el problema desapareció.
fuente