バージョン 3.0 以降、Maven は一貫したシステムを使用して、個々のバージョンとバージョン範囲の両方のバージョン番号を比較します。いくつかの落とし穴を理解すれば、このシステムは非常に理にかなっています。
すべての比較はComparableVersionによって行われるようになりました。
-
' ' (ダッシュ) と ' .
' (ドット) セパレータの混合、
- 文字と数字の間の遷移もセパレータを構成します:
1.0alpha1
=>[1, 0, alpha, 1]
- 無制限の数のバージョン コンポーネント、
- テキスト内のバージョン コンポーネントは、数字または文字列にすることができます。
- 文字列は既知の修飾子についてチェックされ、修飾子の順序はバージョンの順序付けに使用されます。既知の修飾子 (大文字と小文字を区別しない) は次のとおりです。
alpha
またa
beta
またb
milestone
またm
rc
またcr
snapshot
- (空の文字列) または
ga
またはfinal
sp
- 未知の修飾子は、既知の修飾子の後に考えられ、語彙の順序 (常に大文字と小文字を区別しない)、
- 通常、ダッシュは修飾子の前にあり、ドットが前にあるものよりも常に重要ではありません。
これは、バージョンが次の順序で出てくることを意味します。これは、真ん中の 1.0-SNAPSHOT を除いて、完全に理にかなっていると思います。
1.0-beta1-SNAPSHOT
1.0-beta1
1.0-beta2-SNAPSHOT
1.0-rc1-SNAPSHOT
1.0-rc1
1.0-SNAPSHOT
1.0
1.0-sp
1.0-whatever
1.0.1
これらすべてで私が見つけた主な落とし穴は、またはの後snapshot
に来ることです。そのため、 の開発バージョンを作成してから、またはをリリースし、それらが後であることを Maven に理解させることはできません。 beta
rc
1.0-SNAPSHOT
1.0-beta1
1.0-rc1
また、 は とまったく同じであり、はまたはとまったく1.0-beta-1
同じであることに注意してください。1.0beta1
1.0
1
1.0.0
バージョン範囲も (ほぼ) 期待どおりに機能するようになりました。たとえば、 、 、、、または[1.0-alpha-SNAPSHOT,1.0]
を検索1.0-beta1-SNAPSHOT
し、前の項目よりも後の項目を優先します。これは、M2Eclipse などで完全にサポートされています。1.0-beta1
1.0-rc1-SNAPSHOT
1.0-rc1
1.0-SNAPSHOT
1.0
mvn versions:resolve