私のJavaのMavenプロジェクトは、サブプロジェクトの束が含まれている依存関係を見つけるための方法は、すべてのプロジェクトのpom.xml
ファイルには、以下の、バージョン指定されていない明示的に
|- parent |- core |- db |- xml |- util |- config
のようなものがありますいくつかの依存関係が定義されています。ただし、それらのうちのほんの一部については、<version/>
が指定されています。あなたが見ることができるように例
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
について、org.apache.ant
ため、version
を明示的に1.9.7
として言及されています。ただし、org.apache.xmlbeans
の場合、いくつかの要因に基づいてバージョンが自動的に推測されます。これは便利な機能ですが、サードパーティのライブラリプロジェクトが非常にアクティブで、他の依存関係を持つ可能性がある場合は、バージョンを予測できないことがあります。
したがって、問題は、ではないのすべての依存関係が明示的に指定されたversion
であることを確認したいのです。
私はhelp:effective-pom
を試しました。すべてのサブプロジェクトのすべての依存関係を一覧表示しますが、推測されるバージョンも出力します。
effective-pom
の亜種を見ていますが、明示的に指定されていない限り、すべてのサブプロジェクトのすべての依存関係を再帰的に一覧表示しますが、自動的にバージョンを取得しません。このようなリスト(xml形式)を取得したら、XML出力にいくつかのxqueriesを適用して、必要なものを除外して必要な変更を加えることができます。
編集: <version>
タグを持たない依存関係を探しています。それはまだ大丈夫です(?)私のための範囲は、私はMavenのから直接これを処理する方法を知っていませんが、全体POMファイルにXPathを使用して試すことができますRanges
dependencyManagementは依存性を宣言するためのものではないため、依存性管理のバージョンに依存しますが、バージョンがない場合は依存性があります。バージョンが実際に宣言されると、どちらもうまく動作します。あなたの質問が本当に何を意味するかわからない –
バージョンなしでdependencyManagementで依存関係を定義し、警告が出ない場合は、依存関係はすでに他の場所(おそらく親)に定義されています。そうでなければ、バージョンなしの依存関係についての警告が表示されます... – khmarbaise
合意@アドリアンズム。そして、それはあなたのコメントが私に考えさせたものです。私の不安定なビルドのようなものは、依存性の予測不可能なバージョンによるものではありません。おそらく、[プラグインの自動解決](https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes#Maven3.xCompatibilityNotes-AutomaticPluginVersionResolution)が原因です。ありがとう! –