with pom plugin jfrog deploy central archetype maven artifactory

pom - Cuando maven dice "la resolución no se volverá a intentar hasta que haya transcurrido el intervalo de actualización de MyRepo", ¿dónde se especifica ese intervalo?



maven repository (12)

Algo relevante .. me estaba poniendo

"[ERROR] Error al ejecutar el objetivo en el proyecto de proyecto de prueba: No se pudieron resolver las dependencias para el proyecto nombre de myjar: jar: 1.0-0: no se pudo encontrar myjarname-core: paquete: 1.0-0 en http://repo1.maven.org/maven2 se almacenó en la memoria caché en el repositorio local, la resolución no se volverá a intentar hasta que el intervalo de actualización de la central haya transcurrido o se hayan forzado las actualizaciones -> [Ayuda 1] "

Este error fue causado por el uso accidental de Maven 3 lugar de Maven 2 . Pensé que podría ahorrarle a alguien algo de tiempo, porque mi búsqueda inicial en Google me llevó a esta página.

Con Maven, ocasionalmente golpeo 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 experto que indica que no se puede encontrar un artefacto:

Si no se encuentra org.jfrog.maven.annomojo: maven-plugin-anno: jar: 1.4.0 en http://myrepo:80/artifactory/repo se almacenó en caché en el repositorio local, la resolución no se reintentará hasta el intervalo de actualización Ha transcurrido MyRepo o se han forzado las actualizaciones -> [Ayuda 1]

Ahora, entiendo lo que esto significa, y simplemente puedo volver a ejecutar mi comando con -U , y las cosas generalmente funcionan bien de ahí en adelante .

Sin embargo, encuentro 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 intentando averiguar si hay algún lugar donde pueda modificar esta configuración del update interval .

  1. ¿Es el update interval que se menciona en este mensaje de error una configuración del lado del cliente o del servidor?
  2. Si es del lado del cliente, ¿cómo lo configuro?
  3. En el lado del servidor, ¿alguien sabe cómo / si Nexus / Artifactory expone estas configuraciones?

Cómo conseguí este problema,

Cuando cambié de Eclipse Juno a Luna y compré mis proyectos de Maven del repositorio de SVN, tuve los mismos problemas al crear las aplicaciones.

¿Qué intenté? 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 -> y pulsé el botón Reindexar en el repositorio local y esperé a que ocurriera la reindexación.

Eso es todo, el problema está resuelto.


Debe eliminar todos los archivos "_maven.repositories" de su repositorio.


En Eclipse:

  • Haga clic con el botón derecho en el Proyecto -> Ejecutar como -> Maven Build -> Especifique el objetivo como "instalación limpia" - >> Los artefactos requeridos se descargarán al repositorio local.
  • - >> Cuando el éxito de la construcción! -> Haga clic con el botón derecho en Proyecto-> Maven -> Actualizar proyecto (marque limpio).

Este error a veces puede ser engañoso. 2 cosas que querrás revisar:

  1. ¿Hay un JAR real para la dependencia en el repositorio? Su mensaje de error contiene una URL de donde está buscando, así que vaya allí y luego busque la carpeta que coincida con su dependencia. ¿Hay un tarro? Si no, necesitas cambiar tu dependencia. (por ejemplo, podría estar apuntando a una dependencia principal de nivel superior, cuando debería estar apuntando a un subproyecto)

  2. Si el contenedor 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 / repository (ls -a para mostrar oculto si está en Linux).


Lo que básicamente sucede es que, de acuerdo con la política de actualización predeterminada de maven.Maven recuperará los frascos del repositorio a diario. Por lo tanto, si durante el primer intento no funcionó internet, no intentará recuperar este frasco hasta 24 horas.

Resolución:

O bien usar

mvn -U clean install

donde -U obligará a actualizar el repositorio.

o usar

<profiles> <profile> ... <repositories> <repository> <id>myRepo</id> <name>My Repository</name> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> </repository> </repositories> ... </profile> </profiles>

en su configuración.xml


Según la reference configuración:

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

Ejemplo:

<profiles> <profile> ... <repositories> <repository> <id>myRepo</id> <name>My Repository</name> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> </repository> </repositories> ... </profile> </profiles> ... </settings>


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.


Si usa Nexus como un repositorio proxy, tiene la configuración "No se encontró el caché TTL" con un valor predeterminado de 1440 minutos (o 24 horas). La reducción de este valor puede ayudar (Repositorios> Configuración> Configuración de vencimiento).

Consulte la documentation para más información.


Solía ​​resolver este problema eliminando el directorio correspondiente no se pudo descargar el artefacto en mi repositorio local. La próxima vez que ejecute el comando maven, la descarga de artefactos se activará nuevamente. Por lo tanto, diría que es un ajuste del lado del cliente.

Lado Nexus (lado del servidor), este problema se resuelve configurando una tarea programada. Lado del cliente, esto se hace usando -U , como ya ha señalado.


Tuve un problema relacionado, pero la respuesta de Raghuram me ayudó. (Todavía no tengo suficiente reputación para votar su respuesta). Estoy usando Maven incluido con NetBeans, y obtuve el mismo "... se almacenó en caché en el repositorio local, la resolución no se volverá a intentar hasta que el intervalo de actualización del nexo haya transcurrido o las actualizaciones estén forzadas -> [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)

<profile> <id>nexus</id> <!--Enable snapshots for the built in central repo to direct --> <!--all requests to nexus via the mirror --> <repositories> <repository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases> <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://central</url> <releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases> <snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots> </pluginRepository> </pluginRepositories> </profile>


puede eliminar el directorio de artefactos fallidos correspondiente en su repositorio local. Y también puedes simplemente usar la -U en la meta. Hará el trabajo. Esto funciona con el experto 3. Por lo tanto, no es necesario degradar al nivel 2.