web-dev-qa-db-ja.com

M2E:バージョンが親バージョンと重複しています-これはなぜ警告ですか?

いくつかの共通の機能または少なくとも共通の構成/依存関係を持つMavenプロジェクトがいくつかあります。これを共通のpom.xmlに抽出し、その後、永続性、Spring関連の依存関係など、いくつかのファセットをモジュール化しました。これらはすべて、この親POMを継承する独自のモジュールに含まれています。

現在、「Common」はバージョン1.0.0であり、それを継承したい「ProjectA」があります。警告が表示されます:

バージョンは親バージョンの複製です

これが警告である理由を完全には理解していません。バージョンを継承するために、プロジェクトPOMからバージョンを省略するオプションがあると思いました。 (私はこれを一般的なモジュールに対して行います-たとえば、common-springはSpringアプリに共通の依存関係を追加し、実際、ProjectAは実際にcommon-springを継承します。)

それだけではありません-オプション? ProjectAのバージョンを1.0.1または2.0.0に変更すると、すべて問題ありません。

47
Doug Moscrop

バージョン要素(グループIDなど)は冗長な場合があり、親POMから継承できるため、賢くしようとするのはm2eです。したがって、この要素を子POMから削除しても安全です。

ただし、親プロジェクトと子プロジェクトのライフサイクルが異なる場合など、冗長な情報ではない場合があり、m2eではこの警告を無効にする必要があります。残念ながら、まだこれを行う方法はありません: http://dev.Eclipse.org/mhonarc/lists/m2e-users/msg01961.html

UPDATE:Duncanが次のように言っているように、新しいバージョンではこの警告を無効にできます。

54
Fabricio Lemos

M2eの新しいバージョン(1.1以降)では、この警告を無効にできるようになりました。

設定> Maven>警告>「バージョンは親バージョンと重複しています」警告を無効にします

オリジナルのバグレポート: https://bugs.Eclipse.org/bugs/show_bug.cgi?id=356796

55
Duncan Jones

本当に困る場合は、プロパティを使用して、いくつかの巧妙な巧妙さで警告を抑制します。

<version>${api.version}</version>
<properties>
    <api.version>0.0.1-SNAPSHOT</api.version>
</properties>

ただし、実際に行うことは、警告をコンソール出力に移動することだけです。

[WARNING] Some problems were encountered while building the effective model for [project]
[WARNING] 'version' contains an expression but should be a constant.
2
DJDaveMark