私は、非固有のスナップショット(Maven 3でサポートされている唯一の種類のスナップショット)を使用するマルチモジュールビルドで、maven-enforcerルールが失敗するプロジェクトを持っています。Maven固有のスナップショットと依存関係の収束
例えば、仮定 - >関係 "に依存する" とされている:
- モジュール-A - >モジュール-B - >モジュール-C
- モジュール-A - >モジュール-C
モジュールBとモジュールCは、スナップショットリポジトリに固有のビルドとして存在します。 POMの宣言されたモジュールのバージョンはすべて1.0-SNAPSHOTです。今
、モジュールA失敗構築:推移的依存関係は一意でないスナップショットビルドとして解決されていますが、直接の依存関係は次のように解決され
[INFO] --- maven-enforcer-plugin:1.0.1:enforce (enforce) @ Module-A ---
[ERROR]
Dependency convergence error for com.vivosys.project:Module-C:1.0-SNAPSHOT paths to dependency are:
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
+-com.vivosys.project:Module-B:1.0-20111228.032527-8
+-com.vivosys.project:Module-C:1.0-SNAPSHOT
and
+-com.vivosys.project:Module-A:1.0-SNAPSHOT
+-com.vivosys.project:Module-C:1.0-20111228.032527-6
:中
mvn -pl Module-A install
結果を一意のスナップショットビルド。
私はmaven 3.0.3、maven-enforcer 1.0.1を使用しています。レポジトリは、ユニークなスナップショットオプションを使用するArtifactory 2.4.2です(Artifactoryが推奨するように、Maven 3では一意でないスナップショットはサポートされないため)。
ソリューション?
更新:artifactoryのように見えるので、Mavenクライアントの動作をオーバーライドし、非ユニークなスナップショットをリポジトリに保存することができます。しかし何らかの理由でArtifactoryはこれを推奨していません(http://wiki.jfrog.org/confluence/display/RTF/Local+Repositoriesの "Maven 3"の記事を参照)ので、他の解決策も歓迎します。
バグレポートへのリンクありがとうございます。モジュールBとC *の両方がすでにAの依存として明示的に宣言されていることに注意してください。これは実際に収束の失敗を引き起こす原因です。 – Raman