16

私は、依存関係が最適化されていない約40のサブプロジェクトで構成される大きなプロジェクトに取り組んでいます。使用されていないだけでなく、使用されているが宣言されていない依存関係が宣言されています。2番目のケースは、依存関係が他の依存関係を介して追加された場合に発生する可能性があります。

冗長性を削除し、必要な依存関係を追加したいと思います。私は走っmvn dependency:analyzeて、今修正しなければならない警告の長いリストを手に入れました。

pom.xmlファイルを自動的に更新できるMavenプラグインやその他のユーティリティがあるかどうか疑問に思います。手動でやってみましたが、時間がかかります。タスクを完了するには、コピー/貼り付けに数日かかるようです。

最悪の場合、私はそのようなスクリプトを自分で書くことができますが、おそらく準備ができているものが存在しますか?

mvn dependency:analyze依存関係の警告を報告する方法は次のとおりです。

[WARNING] Used undeclared dependencies found:
[WARNING]    org.apache.httpcomponents:httpcore:jar:4.1:compile
[WARNING] Unused declared dependencies found:
[WARNING]    commons-lang:commons-lang:jar:2.4:compile
[WARNING]    org.json:json:jar:20090211:compile
4

2 に答える 2

7

私は言いません:非常に最適化されていない依存関係があります。誰かが自分の仕事をうまくやっていないだけです。使用されていない依存関係を定義すると、ビルドツールとは何か、その仕組みを誰かが理解していないことがわかります。これは、多くの未使用のインポートを含む Java ファイルと比較できます。Java ソース内の未使用のインポートの場合、これは IDE で簡単に処理できますが、Maven の依存関係については、既に表現されているような単純な方法は存在せず、問題は DI などの種類であり、この作業を困難にします。dependency:analyze の結果をスクリプトに出力して (その目的のためのオプションが存在します)、その後、依存関係をクリーンアップした後に結果のビルドをテストすることができます。

走るのもいいかも

mvn dependency:analyze -DscriptableOutput=true 

これは、出力から非常に簡単に抽出できる出力を生成し、versions-maven-plugin の入力として使用するなどのさらなる処理に使用できます (事前変換あり)。

于 2012-07-11T15:14:14.543 に答える
4

依存関係を自動的にクリーンアップすることはお勧めしません。

  1. すべての 'Used undeclared...' を追加すると、ほとんどの推移的な依存関係が重複し、それらの読み取りと管理により多くの時間を費やすことになります。

  2. すべての「未使用の宣言...」を削除すると、実行時にエラーが発生する可能性があります。リフレクションによって呼び出されるか、サードパーティの依存関係で既に使用されている同じアーティファクトのバージョンをオーバーライドするように特別に宣言されているためです (コンパイルスコープをランタイムに変更すると、テストスコープは、本番パッケージへのリークを避けるためにそのままにする必要がありますが、サードパーティライブラリなどのオプションの推移的な依存関係の使用を宣言するために追加する必要があります。

于 2012-07-11T14:57:32.600 に答える