web-dev-qa-db-ja.com

Mavenが毎回maven-metadata.xmlをダウンロードするのはなぜですか?

以下は、Mavenを使用してWebアプリケーションを構築しようとしたときに、インターネット接続に問題がある場合に通常表示されるエラーです。

私の質問は、同じアプリが以前にビルドされたときに毎回常にMavenをダウンロードする必要がある理由です。

Mavenが毎回ダウンロードするようにする私の構成の何が問題になりますか?

以下は、オフラインでビルドしようとしたときに表示されるエラーです。

[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

settings.xml要素(または、おそらくプロジェクトの親または企業の親POM)で<repositories>要素を探します。以下のようになります。

<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>

<updatePolicy>要素に注意してください。この例は、Mavenがビルド中にスナップショットアーティファクトを取得する必要があるときはいつでも、リモートリポジトリ(私の場合はNexus、自分のリモートリポジトリを使用していない場合はMaven Central)に連絡して、新しいコピーがあるかどうかを確認するように指示します。これにはメタデータが必要です。新しいコピーがある場合、Mavenはローカルリポジトリにダウンロードします。

この例では、リリースの場合、ポリシーはdailyであるため、その日の最初のビルド時にチェックされます。 Maven設定ドキュメント で説明されているように、neverも有効なオプションです。

プラグインは個別に解決されます。必要に応じて異なる更新ポリシーを使用して、これらのリポジトリも設定できます。

<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>

他の誰かが-oオプションに言及しました。これを使用すると、Mavenは「オフライン」モードで実行されます。ローカルリポジトリのみがあることを認識しており、使用する更新ポリシーに関係なく、リモートリポジトリに接続してアーティファクトを更新することはありません。

111
user944849

それを防ぐためにフラグ-o,--offline "Work offline"を使用する可能性があります。

このような:

maven compile -o

24
jfc

プラグインのバージョンを指定しなかったため、最後のメタデータを取得するために関連するメタデータのダウンロードがトリガーされるためだと思います。

それ以外の場合は、-oを使用してローカルリポジトリの使用を強制しようとしましたか?

13
Gab

Mavenがどのルックアップを行うかについてはまだ検討していませんが、安定した再現可能なビルドを取得するには、Mavenリポジトリに直接アクセスせず、NexusなどのMavenリポジトリマネージャーを使用することを強くお勧めします。

設定ファイルの設定方法のチュートリアルは次のとおりです。

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

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

0
Puce