A continuación se muestra el error que generalmente obtengo cuando mi conexión a Internet es irregular cuando intento crear una aplicación web con maven.
Mi pregunta es por qué Maven siempre tiene que descargar cada vez que la misma aplicación se ha creado antes.
¿Qué podría estar mal en mi configuración que hace que maven se descargue cada vez?
A continuación se muestra un error que obtengo cuando intento compilar sin conexión:
[INFO] ------------------------------------------------------------------------
[INFO] Building mywebapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://raw.github.com/pagecrumb/mungo/mvn-repo/com/pagecrumb/mungo/0.0.1-SNAPSHOT/maven-metadata.xml
[WARNING] Could not transfer metadata com.mywebapp:mungo:0.0.1-SNAPSHOT/maven-metadata.xml
from/to mungo-mvn-repo (https://raw.github.com/pagecrumb/mungo/mvn-repo/): raw.github.com
[INFO]
[INFO] --- maven-war-plugin:2.1.1:war (default-cli) @ mywebapp ---
[INFO] Packaging webapp
[INFO] Assembling webapp [mywebapp] in [D:\workspace\web\target\mywebapp-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [D:\workspace\web\src\main\webapp]
[INFO] Webapp assembled in [1237 msecs]
[INFO] Building war: D:\workspace\web\target\mywebapp-1.0-SNAPSHOT.war
[WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored
(webxml attribute is missing from war task,
or ignoreWebxml attribute is specified as 'true')
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building com.mywebapp [com.mywebapp] 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.1/maven-release-plugin-2.1.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-release-plugin:2.1: Plugin org.apache.maven.plugins:maven-release-plugin:2.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-release-plugin:jar:2.1
Downloading: http://download.java.net/maven/2/org/apache/maven/plugins/maven-metadata.xml
Downloading: http://download.java.net/maven/2/org/codehaus/mojo/maven-metadata.xml
397/397 B
Downloaded: http://download.java.net/maven/2/org/codehaus/mojo/maven-metadata.xml (397 B at 0.0 KB/sec)
[WARNING] Failure to transfer org.apache.maven.plugins:maven-war-plugin/maven-metadata.xml from http://download.java.net/maven/2 was cached in the local repository, resolution will not be reattempted until the update interval of maven2-repository.dev.java.net has elapsed or updates are forced. Original error: Could not transfer metadata org.apache.maven.plugins:maven-war-plugin/maven-metadata.xml from/to maven2-repository.dev.java.net (http://download.java.net/maven/2): download.java.net
[INFO]
[INFO] --- maven-war-plugin:2.3:war (default-cli) @ mywebapp-build ---
[INFO] Packaging webapp
[INFO] Assembling webapp [mywebapp-build] in [D:\workspace\target\mywebapp-build-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Webapp assembled in [15 msecs]
[INFO] Building war: D:\workspace\target\mywebapp-build-0.0.1-SNAPSHOT.war
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] mywebapp ..................................... SUCCESS [27.999s]
[INFO] com.mywebapp [com.mywebapp] ..................... FAILURE [1:00.406s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1:41.409s
[INFO] Finished at: Tue May 07 22:13:38 SGT 2013
[INFO] Final Memory: 11M/28M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.3:war
(default-cli) on project mywebapp-build: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)
java
maven
maven-3
maven-metadata
quarks
fuente
fuente
mvn clean install -o
-nsu
,--no-snapshot-updates
opción conmvn
Respuestas:
Busque en su
settings.xml
(o posiblemente el POM principal de su proyecto o el padre corporativo) el<repositories>
elemento. Se verá algo parecido al siguiente.Tenga en cuenta el
<updatePolicy>
elemento. El ejemplo le dice a Maven que se comunique con el repositorio remoto (Nexus en mi caso, Maven Central si no está usando su propio repositorio remoto) cada vez que Maven necesite recuperar un artefacto de instantánea durante una compilación, verificando si hay una copia más nueva. Los metadatos son necesarios para esto. Si hay una copia más reciente, Maven la descarga en su repositorio local.En el ejemplo, para las versiones, la política es
daily
que verificará durante su primera compilación del día.never
también es una opción válida, como se describe en los documentos de configuración de Maven .Los complementos se resuelven por separado. También puede tener repositorios configurados para esos, con diferentes políticas de actualización si lo desea.
Alguien más mencionó la
-o
opción. Si lo usa, Maven se ejecuta en modo "sin conexión". Sabe que solo tiene un repositorio local y no se comunicará con el repositorio remoto para actualizar los artefactos, independientemente de las políticas de actualización que utilice.fuente
-U
o el artefacto se elimine del repositorio local y, por lo tanto, deba volver a descargarse.Posiblemente sea para usar la bandera
-o,--offline "Work offline"
para evitarlo.Me gusta esto:
maven compile -o
fuente
Supongo que debido a que no especificó la versión del complemento, se activa la descarga de metadatos asociados para obtener el último.
De lo contrario, ¿intentó forzar el uso del repositorio local usando -o?
fuente
version
elemento dentro delplugin
elemento, entonces lo ha configurado, si es así, no tengo ideas ... Buena suertemaven-surefire-common
, que no he especificado?pluginManagement
secciónNo he estudiado todavía, cuando Maven hace qué búsqueda, pero para obtener compilaciones estables y reproducibles, recomiendo encarecidamente no acceder directamente a los repositorios de Maven, sino utilizar un administrador de repositorio de Maven como Nexus.
Aquí está el tutorial sobre cómo configurar su archivo de configuración:
http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html
http://maven.apache.org/repository-management.html
fuente
Maven hace esto porque su dependencia está en una versión SNAPSHOT y maven no tiene forma de detectar ningún cambio realizado en esa versión instantánea en el repositorio. Libera tu artefacto y cambia la versión en pom.xml a esa versión y maven ya no buscará el archivo de metadatos.
fuente