私のローカルMavenキャッシュ(~/.m2/repository/
)を見ると、特定のビルド(プロジェクト)にのみ使用される特定の成果物の10-20バージョンがあります。私はこの重複を取り除きたいと思っています(彼らは異なったバージョンですが、依然として依存しているプロジェクトがマイクロまたはマイナーバージョンの違いを許容できると思います)。そして、Mavenに何らかの形で最も近い利用可能なバージョン特定のアーティファクトバージョンがローカルリポジトリに存在しない場合、依存関係の解決中に欠けている依存関係を最も近い利用可能な一致で解決するようにする
私はバージョン1.0.0
、1.1.2
、1.4.0
と私のローカルキャッシュにfoo:bar
アーティファクトの2.0.0
を持っている場合たとえば、私がMavenを希望:1.1.0
- 使用
1.1.2
1.4.0
ビルドに必要なもの1.4.10
2.0.0
ビルドに必要なもの2.5.0
特定のビルドのpom
を手動で変更する必要はありません。
私は、適切な分析を行わずに依存関係のバージョンを切り替えることに関連するリスクをかなり認識しており、非クリティカルなビルド(ツール/ライブラリVCSであり、実行して試してみたい)、好ましくは特定のフラグが与えられたときにのみ起動される。
Mavenの拡張機能やプラグイン(システム全体に適用でき、必要に応じてフラグを付けることができます)のように、私の目標を達成するのに役立つものがありますか?
PS:「最も近い」の定義は(Mavenのは、それらの間にある実際のリリースバージョンに応じて、1.5.0
に近い1.4.0
と2.0.0
のか分からないかもしれないという事実を与えられた)あいまいな可能性がありますので、それも十分であろうビルドコマンドでバージョンを指定できる場合は(mvn package -Dfoo:bar=1.4.0
など)、マニュアルを変更せずにpom
を変更してください。 (これは既に<properties>
のエントリとして指定されたバージョンでは可能ですが、推移的な依存関係のハードコーディングされたバージョンでさえオーバーライドできる一般的な解決策が必要です。 )は、私によって作成されたものではないので、実際にはpom
ファイルに対して制御権を持っていません。私が探しているのは、ソースレベルでの手動修正を行わずに、pom
ファイルの依存関係のバージョンを上書きする方法です。
mavenのバージョンは範囲にすることができます。 [POMの参考文献](https://maven.apache.org/pom.html)のセクション "Dependency Version Requirement Specification"を読んでいますか? –
@PaulHicksありがとうございます。しかし、私は 'pom'が私によって構成されていない任意のライブラリ(VCSからクローンしたものなど)をビルドすることを指しています。 )。 Btw申し訳ありませんが、 "ペットのプロジェクト"という言葉が間違っている場合、私はそれを削除します:) –
これはdependencyManagementの目的です。あなたのpomはあなたが受け入れるバージョン/バージョンの範囲を定義します。サードパーティのPOMが第4(?)パーティのpom(バージョン1.2)に依存している場合は、そのプロジェクトの一時的な依存関係を親pomから除外し、正しいバージョンまたはバージョンの範囲を自分自身で含めることができます。私は、5.0.0-RC2を使用しているときに、JUnit 4.12に依存しているプロジェクトのために常にそれを行います... –