2

必要なすべての依存関係が中央リポジトリにあり、そこからダウンロードされるようにするために、リリースを開始する前に、プロジェクトの依存関係のローカル リポジトリを削除しようとしています。

プロジェクト フォルダー (pom.xml を含む) で、次のコマンドを起動します。

mvn clean dependency:purge-local-repository -DreResolve=false -Dverbose=true

プロジェクトの POM は非常に単純で、junit:junit:3.8.1 への依存関係が宣言されているだけです。

コマンドの出力は次のとおりです。

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building corelib-api 0.1.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ corelib-api ---
[INFO] Deleting d:\Users\fpaillard\git-repositories\TEST_CORELIB\corelib-api\target
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building corelib-api 0.1.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.1:purge-local-repository (default-cli) @ corelib-api ---
[WARNING] Missing POM for junit:junit:jar:3.8.1
[INFO] Skipping: corelib-api. It cannot be resolved.
[INFO] Nothing to do for project: test:corelib-api:jar:0.1.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.953s
[INFO] Finished at: Mon May 14 11:34:40 CEST 2012
[INFO] Final Memory: 6M/15M
[INFO] ------------------------------------------------------------------------

ローカル リポジトリ (で確認したパスmvn help:effetive-settings) を見ると、junit JAR も POM も.m2/repository/junit/junit/3.8.1フォルダーに残っています。

dependency:purge-local-repository削除しなくていいの?

上記の出力の警告がわかりません。junit:junit:jar:3.8.1 POM がないのはなぜですか? それはまだ存在しています.m2/repository/junit/junit/3.8.1/junit-3.8.1.pom

問題は INFO 行に関連していSkipping: corelib-api. It cannot be resolved.ますか? corelib-api私が実行したプロジェクトのアーティファクト名ですmvn dependency:purge-local-repository

4

2 に答える 2

0

ドキュメントを見ると、actTransitively オプションを無効にすると、pom.xml によって直接名前が付けられた依存関係のみがパージ目標によってパージされます。ビルドの時間になると、Maven は直接の依存関係だけでなく、すべての TRANSITIVE 依存関係もローカル リポジトリに自動的にプルします。

パージ ゴールが何を削除するかを探しているときに、依存関係の poms に他の依存関係が見つかった場合、それらの依存関係を横断して、パージできるローカル リポジトリ内のツリー全体を見つけ出します。これを行うには、少なくとも推移的なプロジェクトの pom.xml が必要です。ローカル リポジトリで見つからない場合、または分析するより新しいバージョンがあると思われる場合は、外部リポジトリに移動して検索します。

パージを開始する前に、実際に完全なプロジェクト コンテンツをダウンロードしようとすることはないと思います。ただし、少なくともプロジェクトの pom.xml ファイルをプルダウンするため、実際のビルドの依存関係を解決する場合と同じように、ファイルが見つからない場合は文句を言います。

パージ中にMavenが外部リポジトリにアクセスできないようにするだけでなく、別の実際的な理由は、同じ推移的な依存関係を持つ2つのプロジェクトがあり、一方からのパージが他方のパフォーマンスに影響を与えたくない場合です(後者は不足している依存関係を再度ダウンロードする必要があります)。

一方、慎重に考慮すべきことは、パージで可能なすべての推移的な依存関係を考慮することを許可しない場合、そうでなければ削除したかったであろうダウンストリームの依存関係のセットがローカル リポジトリに残ったままになることです。

取得している出力が不要であるか、「reportInaccessibleDependencies = false」などの別のフラグで防止できると主張することができます。しかし、それがあなたのビルドを殺していない限り、私はそれが心配することは何もないとは言いません.

于 2016-06-23T20:37:33.267 に答える