78

Maven がダウンロードした依存関係を保存する .m2 フォルダーにファイルが多すぎます。古い依存関係をすべて消去する方法はありますか? たとえば、1、2、および 3 の 3 つの異なるバージョンの依存関係がある場合、クリーニング後は 3 のみが存在する必要があります。.m2 フォルダー内のすべての依存関係に対してどのように行うことができますか?

4

10 に答える 10

44

Unix を使用している場合は、そこにあるファイルのアクセス時間を使用できます。ファイルシステムのアクセス時間を有効にしてから、依存関係を保持したいすべてのプロジェクトのクリーンビルドを実行してから、次のようにします (未テスト!):

find ~/.m2 -amin +5 -iname '*.pom' | while read pom; do parent=`dirname "$pom"`; rm -Rf "$parent"; done

これにより、5 分以上前に最後にアクセスされたすべての *.pom ファイルが検索され (最大 5 分前にビルドを開始したと仮定)、それらのディレクトリが削除されます。

「dry-run」を実行するには、rm の前に「echo」を追加します。

于 2015-04-30T14:28:57.293 に答える
32

簡単な回答- の .m2 フォルダーを削除しました{user.home}。たとえば、Windows 10 のユーザー ホームはC:\Users\user1. を使用してプロジェクトを再構築しますmvn clean package。プロジェクトで必要な依存関係のみが残ります。

長い答え- .m2 フォルダーは通常のフォルダーと同じで、フォルダーの内容はさまざまなプロジェクトから構築されます。どのライブラリが「古い」かを自動的に把握する方法はないと思います。実際、古いというのは漠然とした言葉です。プロジェクトで以前のバージョンのライブラリが使用されている場合、多くの理由が考えられるため、使用されていないライブラリを特定することはできません。

できることは、.m2 フォルダーを削除してすべてのプロジェクトを再ビルドすることだけです。その後、フォルダーは必要なすべてのライブラリで自動的にビルドされます。

すべてのプロジェクトで特定のバージョンのライブラリのみを使用することに関心がある場合。プロジェクトの pom も最新バージョンに更新することが重要です。つまり、異なる POM が異なるバージョンのライブラリを参照している場合、すべてが .m2 でダウンロードされます。

于 2013-10-11T07:12:45.093 に答える
8
  1. プロジェクトの実際の依存関係をすべてダウンロードする

    find your-projects-dir -name pom.xml -exec mvn -f '{}' dependency:resolve
    
  2. ローカルの Maven リポジトリを一時的な場所に移動します

    mv ~/.m2 ~/saved-m2
    
  3. すべてのファイルの名前を、保存されたリポジトリから maven-metadata-central.xml* に変更し、maven-metadata.xml* に変更します。

    find . -type f -name "maven-metadata-central.xml*" -exec rename -v -- 's/-central//' '{}' \;
    
  4. ローカル リポジトリの変更されたコピーをミラーとしてセットアップするには、ディレクトリ ~/.m2 とファイル ~/.m2/settings.xml を次の内容で作成します ( userをユーザー名に置き換えます)。

    <settings>
     <mirrors>
      <mirror>
       <id>mycentral</id>
       <name>My Central</name>
       <url>file:/home/user/saved-m2/</url>
       <mirrorOf>central</mirrorOf>
      </mirror>
     </mirrors>
    </settings>
    
  5. プロジェクトの依存関係を再度解決します。

    find your-projects-dir -name pom.xml -exec mvn -f '{}' dependency:resolve
    
  6. これで、必要なアーティファクトが最小限のローカル Maven リポジトリができました。構成ファイルとファイル システムからローカル ミラーを削除します。

于 2016-09-16T00:08:28.703 に答える
1

.m2->repository フォルダーの下のすべてのコンテンツを消去するだけです。プロジェクトをビルドすると、すべての依存関係がここに読み込まれます。

あなたの場合、以前のプロジェクトは依存関係の古いバージョンを使用していて、現在はバージョンがアップグレードされている可能性があります.m2フォルダーをきれいにして、mvn clean installでプロジェクトをビルドしてください。

これで、最新バージョンのモジュールとの依存関係がこのフォルダーにダウンロードされます。

于 2015-11-18T11:09:38.060 に答える