web-dev-qa-db-ja.com

パージローカルリポジトリは実際に何をパージしますか?

Mavenプロジェクトディレクトリ内から次のコマンドを実行しています。

mvn dependency:purge-local-repository

予想される動作は何ですか?

その特定のプロジェクトのローカルリポジトリに既に存在するすべての依存関係を削除(および再ダウンロードしますか)しますか(つまり、そのディレクトリを含む)、またはallを削除します私のローカルリポジトリの内容?

11
pkaramol

デフォルトでは、 purge-local-repository は、実行されているプロジェクトの各依存関係(推移的を含む)のバージョンに関連付けられているすべてのファイルをローカルリポジトリから削除します。

ローカルリポジトリからプロジェクトの依存関係を削除し、オプションでそれらを再解決します。

関係するいくつかの要因は次のとおりです。

  • 推移的な依存関係は、デフォルトでプラグインによって削除されます。これは actTransitively パラメータで設定できます。
  • ローカルリポジトリからパージされたすべてのアーティファクトは、デフォルトで再解決されます。これは reResolve パラメータで設定できます。
  • ローカルリポジトリから削除される実際のファイルは、削除されたアーティファクトのバージョンに関連付けられているすべてのファイルに対応しています。たとえば、依存関係foo:bar:1.0が削除されると、パスfoo/bar/1.0/*にあるすべてのファイルが削除されます。これは resolutionFuzziness パラメータ(デフォルト値はversion)を介して設定可能です:
    • artifactIdの値は、パージされるアーティファクトのアーティファクトIDへのパスの下にあるすべてのファイルをパージします。上記の例では、foo/bar/**の下のすべてのファイルが削除されます(したがって、すべてのバージョンが削除されます)。
    • groupIdの値は、パージされるアーティファクトのグループIDへのパスの下にあるすべてのファイルをパージします。上記の例では、foo/**の下のすべてのファイルが削除されます(したがって、すべての案件IDのすべてのバージョンが削除されます)。
    • fileの値は、パージされるアーティファクトのファイルのみをパージします。上記の例では、ファイルbar-1.0.jar*のみが削除されます(これには、ファイルに含まれるsha1も含まれます)。関連するPOMファイルは削除されません。

list 目標を持つプロジェクトのすべての依存関係のリストを出力することで、どのアーティファクトがパージされるかを確認できます。

mvn dependency:list

推移的な依存関係を削除しない場合は、オプションで excludeTransitive をこのコマンドに追加します。

10
Tunaki

同じパージを使用して詳細に、プロジェクトAとプロジェクトB(Jar)がローカルでビルドされ、プロジェクトAがB(ローカルリポジトリにある)に依存している場合は、次のように解決できます。

mvn dependency:purge-local-repository -Dinclude = com.xxxx.projectB:projectB

プロジェクトAに依存関係を追加すると、問題が解決します。

<dependency>
                <groupId>com.xxxx.projectB</groupId>
                <artifactId>projectB</artifactId>
                <version>${project.version}</version>
            </dependency>

お役に立てれば、

1
Rajesh

以下

http://maven.Apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html

私たちは

dependency:purge-local-repository

ローカルリポジトリからプロジェクトの依存関係を削除し、オプションでそれらを再解決します。

0
JF Meier