it-swarm.com.de

Warum lädt Maven jedes Mal die Datei maven-metadata.xml herunter?

Unten ist der Fehler aufgeführt, den ich normalerweise erhalte, wenn meine Internetverbindung beim Erstellen einer Webanwendung mit maven flankiert ist.

Meine Frage ist, warum muss Maven immer jedes Mal herunterladen, wenn die gleiche App zuvor erstellt wurde.

Was könnte an meiner Konfiguration falsch sein, das maven jedes Mal zum Herunterladen bringt?

Nachstehend ist ein Fehler aufgeführt, den ich erhalte, 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)
91
xybrek

Schau in dein settings.xml (oder möglicherweise das übergeordnete oder übergeordnete POM Ihres Projekts) für das <repositories> Element. Es wird ungefähr so ​​aussehen.

<repositories>
    <repository>
        <id>central</id>
        <url>http://gotoNexus</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
        </releases>
    </repository>
</repositories>

Beachten Sie das <updatePolicy> Element. Das Beispiel weist Maven an, sich an das Remote-Repo zu wenden (Nexus in meinem Fall, Maven Central, wenn Sie kein eigenes Remote-Repo verwenden), wenn Maven während eines Builds ein Snapshot-Artefakt abrufen muss, um zu prüfen, ob es eine neuere Kopie gibt. Hierfür werden die Metadaten benötigt. Wenn es eine neuere Kopie gibt, lädt Maven diese auf Ihr lokales Repo herunter.

In diesem Beispiel lautet die Richtlinie für Releases daily, sodass sie bei Ihrem ersten Build des Tages überprüft wird. never ist auch eine gültige Option, wie in Maven settings docs beschrieben.

Plugins werden separat aufgelöst. Möglicherweise sind auch für diese Repositorys konfiguriert, und bei Bedarf werden andere Aktualisierungsrichtlinien verwendet.

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <url>http://gotoNexus</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
        </snapshots>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
        </releases>
    </pluginRepository>
</pluginRepositories>

Jemand anderes erwähnte das -o Möglichkeit. In diesem Fall wird Maven im "Offline" -Modus ausgeführt. Es weiß, dass es nur ein lokales Repo hat, und es kontaktiert das Remote-Repo nicht, um die Artefakte zu aktualisieren, unabhängig davon, welche Update-Richtlinien Sie verwenden.

111
user944849

Es ist möglich, das Flag -o,--offline "Work offline" Zu verwenden, um dies zu verhindern.

So was:

maven compile -o

24
jfc

Ich nehme an, dass Sie keine Plugin-Version angegeben haben, sodass der Download der zugehörigen Metadaten ausgelöst wird, um die letzte zu erhalten.

Andernfalls haben Sie versucht, die lokale Reponutzung mit -o zu erzwingen?

13
Gab

Ich habe noch nicht untersucht, 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, wie Sie Ihre Einstellungsdatei einrichten:

http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html

http://maven.Apache.org/repository-management.html

0
Puce