Mavenは、これらの種類の推移的な依存関係を管理し、クラスパス上に1つのバージョンのjarだけが存在するように設計されています。 Mavenのは
にdependencyプラグインをやっているかを確認する方法
は、Mavenのは、(様々なのPOMスルーダウントロールと同じモジュールに対する依存関係を宣言した他の誰決定)あなたに代わってやっているものを紹介します。
[INFO] [dependency:tree]
[INFO] org.apache.maven.plugins:maven-dependency-plugin:maven-plugin:2.0-alpha-5-SNAPSHOT
[INFO] +- org.apache.maven.reporting:maven-reporting-impl:jar:2.0.4:compile
[INFO] | \- commons-validator:commons-validator:jar:1.2.0:compile
[INFO] | \- commons-digester:commons-digester:jar:1.6:compile
[INFO] | \- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 2.0)
[INFO] \- org.apache.maven.doxia:doxia-site-renderer:jar:1.0-alpha-8:compile
[INFO] \- org.codehaus.plexus:plexus-velocity:jar:1.1.3:compile
[INFO] \- commons-collections:commons-collections:jar:2.0:compile
は、通常、モジュールの最新バージョンが選択されているいくつかのモジュールは例えば、ログライブラリの最新バージョンでのみ利用可能な方法を使用している場合がありますように、これは理にかなっています。実際には、従属コードがロックステップで保持されていないときに、コンパイルの問題を引き起こす廃止予定のメソッドの削除が一般的です...何
を行うにMavenを伝える方法
あなたが選択したバージョンをより細かく制御したいなら、あなたは次のように依存関係のバージョンの範囲を指定する必要があります。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>[3.8,4.0)</version>
<scope>test</scope>
</dependency>
機能はここで説明されています。
これが役立ちます。
私は同意しません。 Mavenは、クラスパス上に1つのjarファイルしか存在しないようにすることで、 "jar hell"を回避します。 Mavenのドキュメントには、バージョン範囲を記述することによって、これらのバージョンをどのように制御できるかが記載されています。実際には私はこの機能を使用しません。 –
OSGiは素晴らしい技術ですが、デプロイメントの依存関係管理に取り組んでいます。この質問は、** Mavenを使って、**ビルドされた時間依存性管理を扱っていました。 –
@ MarkO'Connorクラスパス上に1つのjarファイルしか存在しないようにして、部分的に役立ちます。コードの一部がバージョン1.0(および2.0ではなく)にある特定のAPIを使用し、コードの別の部分がバージョン2.0(および1.0ではなく)にある特定のAPIを使用する場合、どのように動作するのですか? –