Unten ist der Fehler aufgeführt, den ich normalerweise bekomme, wenn meine Internetverbindung beim Versuch, eine Webanwendung mit maven zu erstellen, flankiert.
Meine Frage ist, warum Maven immer jedes Mal herunterladen muss, wenn dieselbe App früher erstellt wurde.
Was könnte an meiner Konfiguration falsch sein, die Maven jedes Mal zum Herunterladen bringt?
Unten ist ein Fehler, den ich bekomme, wenn ich versuche, offline zu erstellen:
[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
quelle
quelle
mvn clean install -o
-nsu
,--no-snapshot-updates
Option mitmvn
Antworten:
Suchen Sie in Ihrem
settings.xml
(oder möglicherweise dem übergeordneten oder übergeordneten POM Ihres Projekts) nach dem<repositories>
Element. Es wird ungefähr so aussehen wie unten.Beachten Sie das
<updatePolicy>
Element. In diesem Beispiel wird Maven angewiesen, sich jederzeit an das Remote-Repo zu wenden (in meinem Fall an Nexus, Maven Central, wenn Sie kein eigenes Remote-Repo verwenden). Maven muss während eines Builds ein Snapshot-Artefakt abrufen und prüfen, ob eine neuere Kopie vorhanden ist. Hierzu werden die Metadaten benötigt. Wenn es eine neuere Kopie gibt, lädt Maven sie auf Ihr lokales Repo herunter.In diesem Beispiel gilt für Releases die Richtlinie
daily
so, dass sie bei Ihrem ersten Build des Tages überprüft wird.never
ist auch eine gültige Option, wie in den Maven-Einstellungsdokumenten beschrieben .Plugins werden separat aufgelöst. Möglicherweise sind auch für diese Repositorys konfiguriert, ggf. mit unterschiedlichen Aktualisierungsrichtlinien.
Jemand anderes erwähnte die
-o
Option. Wenn Sie das verwenden, wird Maven im "Offline" -Modus ausgeführt. Es weiß, dass es nur ein lokales Repo hat, und es wird das Remote-Repo nicht kontaktieren, um die Artefakte zu aktualisieren, unabhängig davon, welche Update-Richtlinien Sie verwenden.quelle
-U
oder das Artefakt wird aus dem lokalen Repo entfernt und muss daher erneut heruntergeladen werden.Es ist möglicherweise möglich, das Flag
-o,--offline "Work offline"
zu verwenden, um dies zu verhindern.So was:
maven compile -o
quelle
Ich nehme an, weil Sie keine Plugin-Version angegeben haben, sodass der Download der zugehörigen Metadaten ausgelöst wird, um die letzte zu erhalten.
Haben Sie ansonsten versucht, die lokale Repo-Nutzung mit -o zu erzwingen?
quelle
version
Element in demplugin
Element haben, dann haben Sie es tatsächlich konfiguriert, wenn ja, habe ich keine Ideen mehr ... Viel Glückmaven-surefire-common
, was ich nicht angegeben habe?pluginManagement
Abschnitt erzwingenIch habe noch nicht studiert, wann Maven welche Suche durchführt, aber um stabile und reproduzierbare Builds zu erhalten, empfehle ich dringend, nicht direkt auf Maven Respositories zuzugreifen, sondern einen Maven Repository Manager wie Nexus zu verwenden.
Hier ist das Tutorial zum Einrichten Ihrer Einstellungsdatei:
http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html
http://maven.apache.org/repository-management.html
quelle
Maven tut dies, weil sich Ihre Abhängigkeit in einer SNAPSHOT-Version befindet und Maven keine Möglichkeit hat, Änderungen an dieser Snapshot-Version im Repository zu erkennen. Geben Sie Ihr Artefakt frei und ändern Sie die Version in pom.xml in diese Version. Maven ruft die Metadatendatei nicht mehr ab.
quelle