Abaixo está o erro que geralmente recebo quando minha conexão com a Internet falha ao tentar construir um aplicativo da web com o maven.
Minha pergunta é: por que o maven sempre precisa fazer o download sempre que o mesmo aplicativo foi criado anteriormente.
O que pode estar errado na minha configuração que faz o maven baixar todas as vezes?
Abaixo está um erro que recebo quando tento construir offline:
[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
fonte
fonte
mvn clean install -o
-nsu
,--no-snapshot-updates
opção commvn
Respostas:
Procure o elemento no seu
settings.xml
(ou, possivelmente, no POM pai do projeto ou pai corporativo)<repositories>
. Será algo parecido com o abaixo.Observe o
<updatePolicy>
elemento. O exemplo diz ao Maven para contatar o repo remoto (Nexus no meu caso, Maven Central se você não estiver usando seu próprio repo remoto) a qualquer momento que o Maven precisar recuperar um artefato de instantâneo durante uma compilação, verificando se há uma cópia mais recente. Os metadados são necessários para isso. Se houver uma cópia mais recente, o Maven faz o download para seu repositório local.No exemplo, para lançamentos, a política é
daily
verificada durante sua primeira compilação do dia.never
também é uma opção válida, conforme descrito na documentação de configurações do Maven .Os plug-ins são resolvidos separadamente. Você também pode ter repositórios configurados para eles, com políticas de atualização diferentes, se desejar.
Alguém mencionou a
-o
opção. Se você usar isso, o Maven será executado no modo "offline". Ele sabe que tem apenas um repo local e não contatará o repo remoto para atualizar os artefatos, independentemente das políticas de atualização usadas.fonte
-U
ou o artefato seja removido do repositório local e, portanto, precise ser baixado novamente.É possível usar a bandeira
-o,--offline "Work offline"
para evitar isso.Como isso:
maven compile -o
fonte
Suponho que seja porque você não especificou a versão do plugin, então ele aciona o download dos metadados associados para obter o último.
Caso contrário, você tentou forçar o uso do repositório local usando -o?
fonte
version
elemento dentro doplugin
elemento, então você realmente o configurou, se sim, estou sem ideias ... Boa sortemaven-surefire-common
, que eu não especifiquei?pluginManagement
seçãoEu não estudei ainda, quando o Maven faz essa pesquisa, mas para obter compilações estáveis e reproduzíveis, eu recomendo fortemente não acessar os repositórios Maven diretamente, mas usar um gerenciador de repositório Maven como o Nexus.
Aqui está o tutorial sobre como configurar seu arquivo de configurações:
http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html
http://maven.apache.org/repository-management.html
fonte
O Maven faz isso porque sua dependência está em uma versão SNAPSHOT e o maven não tem como detectar nenhuma alteração feita nessa versão do instantâneo no repositório. Libere seu artefato e altere a versão em pom.xml para essa versão e o maven não irá mais buscar o arquivo de metadados.
fonte