2011-12-28 13 views
4

私は、非固有のスナップショット(Maven 3でサポートされている唯一の種類のスナップショット)を使用するマルチモジュールビルドで、maven-enforcerルールが失敗するプロジェクトを持っています。Maven固有のスナップショットと依存関係の収束

例えば、仮定 - >関係 "に依存する" とされている:

  1. モジュール-A - >モジュール-B - >モジュール-C
  2. モジュール-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"の記事を参照)ので、他の解決策も歓迎します。

答えて

2

ヒットしましたthisエンフォーサプラグインのバグ(エンハンストとして上げました)。

恐らく、回避策として、過渡的依存性CをAの依存性として明示的に宣言できますか?

+0

バグレポートへのリンクありがとうございます。モジュールBとC *の両方がすでにAの依存として明示的に宣言されていることに注意してください。これは実際に収束の失敗を引き起こす原因です。 – Raman

1

MENFORCER-118が解決されるまで利用可能な唯一の解決策は、リポジトリサーバが非固有のスナップショットを使用するように設定することです。 Artifactoryでは、これはAdmin, Repositoriesで行い、スナップショットリポジトリを選択してEditを選択します。次に、NonuniqueMaven Snapshot Version Behaviorの下に選択します。