4

一意でないスナップショット(Maven 3でサポートされている唯一の種類のスナップショット)を使用したマルチモジュールビルドで、maven-enforcerルールが失敗するプロジェクトがあります。

たとえば、->が「依存」関係であると仮定します。

  1. モジュール-A->モジュール-B->モジュール-C
  2. モジュール-A->モジュール-C

モジュールBとモジュールCは、一意のビルドとしてスナップショットリポジトリに存在します。POMで宣言されているすべてのモジュールバージョンは、現在1.0-SNAPSHOTです。

ここで、モジュールAの構築は失敗します。

mvn -pl Module-A install

結果:

[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

推移的な依存関係は非一意のスナップショットビルドとして解決されますが、直接の依存関係は一意のスナップショットビルドとして解決されます。

私はmaven3.0.3、maven-enforcer1.0.1を使用しています。リポジトリは、一意のスナップショットオプションを使用するArtifactory 2.4.2です(Maven 3は一意でないスナップショットをサポートしなくなったため、Artifactoryが推奨しています)。

ソリューション?

更新:アーティファクトにより、Mavenクライアントの動作をオーバーライドし、一意でないスナップショットをリポジトリに保存できるように見えます。ただし、何らかの理由でArtifactoryはこれを推奨していません( http://wiki.jfrog.org/confluence/display/RTF/Local+Repositoriesの「Maven3」の宣伝文句を参照)ので、他のソリューションは引き続き歓迎されます。

4

3 に答える 3

4

このバグは修正され(MENFORCER-118)、バージョン1.1でリリースされました。

于 2012-06-15T08:42:43.767 に答える
2

このエンフォーサープラグインのバグに遭遇しました(拡張機能として発生)。

おそらく、厳密には回避策として、推移的な依存関係CをAの依存関係として明示的に宣言できますか?

于 2011-12-29T07:09:08.620 に答える
1

MENFORCER-118が解決されるまで利用できる唯一の解決策は、一意でないスナップショットを使用するようにリポジトリサーバーを構成することであるように思われます。Artifactoryでは、これは次の方法で実行できます。 Admin, Repositories、スナップショットリポジトリを選択し、を選択しますEdit。次に、Nonuniqueの下を選択しますMaven Snapshot Version Behavior

于 2012-01-28T21:04:51.887 に答える