Poniżej znajduje się błąd, który zwykle otrzymuję, gdy moje połączenie internetowe jest niestabilne podczas próby zbudowania aplikacji internetowej za pomocą mavena.
Moje pytanie brzmi: dlaczego maven zawsze musi pobierać za każdym razem, gdy ta sama aplikacja została zbudowana wcześniej.
Co może być nie tak w mojej konfiguracji, co powoduje, że maven pobiera za każdym razem?
Poniżej znajduje się błąd, który pojawia się, gdy próbuję budować 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
kwarki
źródło
źródło
mvn clean install -o
-nsu
,--no-snapshot-updates
opcja zmvn
Odpowiedzi:
Poszukaj elementu w swoim
settings.xml
(lub być może w POM nadrzędnym lub korporacyjnym)<repositories>
. Będzie wyglądać jak poniżej.Zwróć uwagę na
<updatePolicy>
element. Przykład mówi Mavenowi, aby skontaktował się ze zdalnym repozytorium (w moim przypadku Nexus, Maven Central, jeśli nie używasz własnego zdalnego repozytorium) za każdym razem, gdy Maven musi pobrać artefakt migawki podczas kompilacji, sprawdzając, czy jest nowsza kopia. Do tego wymagane są metadane. Jeśli istnieje nowsza kopia, Maven pobiera ją do lokalnego repozytorium.W tym przykładzie dla wydań zasada jest
daily
taka, że będzie sprawdzana podczas pierwszej kompilacji danego dnia.never
jest również prawidłową opcją, jak opisano w dokumentacji ustawień Mavena .Wtyczki są rozwiązywane osobno. Możesz mieć również skonfigurowane repozytoria, z różnymi zasadami aktualizacji, jeśli chcesz.
Ktoś inny wspomniał o tej
-o
opcji. Jeśli tego używasz, Maven działa w trybie „offline”. Wie, że ma tylko lokalne repozytorium i nie skontaktuje się ze zdalnym repozytorium, aby odświeżyć artefakty, bez względu na używane zasady aktualizacji.źródło
-U
lub artefakt zostanie usunięty z lokalnego repozytorium i trzeba będzie go pobrać ponownie.Możliwe jest użycie flagi,
-o,--offline "Work offline"
aby temu zapobiec.Lubię to:
maven compile -o
źródło
Przypuszczam, że ponieważ nie określiłeś wersji wtyczki, więc uruchamia pobieranie powiązanych metadanych w celu uzyskania ostatniej.
Czy w przeciwnym razie próbowałeś wymusić użycie lokalnego repozytorium za pomocą -o?
źródło
version
element wewnątrzplugin
elementu, to rzeczywiście go skonfigurowałeś, jeśli tak, nie mam pomysłów ... Powodzeniamaven-surefire-common
, których nie określiłem?pluginManagement
sekcjiNie uczyłem się jeszcze, kiedy Maven wykonuje które wyszukiwanie, ale aby uzyskać stabilne i odtwarzalne kompilacje, zdecydowanie zalecam, aby nie uzyskiwać bezpośredniego dostępu do repozytoriów Maven, ale użyć Menedżera repozytoriów Maven, takiego jak Nexus.
Oto samouczek, jak skonfigurować plik ustawień:
http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html
http://maven.apache.org/repository-management.html
źródło
Maven robi to, ponieważ twoja zależność jest w wersji SNAPSHOT, a maven nie ma możliwości wykrycia jakichkolwiek zmian wprowadzonych w tej wersji migawki w repozytorium. Uwolnij swój artefakt i zmień wersję w pom.xml na tę wersję, a maven nie będzie już pobierać pliku metadanych.
źródło