2013-03-14 12 views
5

私の目標は、依存関係が1つのプロジェクトをリリースすることです。スナップショットとリリースの両方のバージョンを展開するネクサスリポジトリがあります。mavenのバージョン候補とスナップショットを公開

私が持っている1つの依存関係は、依存関係を解決するためのプラグインのバージョンに尋ねたときに、それは無いと主張

group:artifact:1.1.0-RC1 

group:artifact:1.1.0-SNAPSHOT 

を持っており、次のリリース候補版が私のネクサスレポでリリースされました新しい依存関係が利用可能です。そこで彼は、私のプロジェクトで、私はバージョン1.0.0-SNAPSHOTを持っている場合は

1.1.0-SNAPSHOT > 1.1.0-RC1 

しかし、バージョン1.1.0-RC1が最新版として解決されていることを考えます。

私には何が欠けていますか? (私は、プラグインのソースに見て、我々は次のスニペットがあります。?

String otherQualifier = otherVersion.getQualifier(); 

if (otherQualifier != null) 
{ 
    if ((qualifier.length() > otherQualifier.length()) 
     && qualifier.startsWith(otherQualifier)) 
    { 
    // here, the longer one that otherwise match is considered older 
    result = -1; 
    } 
    else if ((qualifier.length() < otherQualifier.length()) 
     && otherQualifier.startsWith(qualifier)) 
    { 
    // here, the longer one that otherwise match is considered older 
    result = 1; 
    } 
    else 
    { 
    result = qualifier.compareTo(otherQualifier); 
    } 
} 

任意のアイデア私にはバグだらけだ

答えて

9
次のように

Mavenのバージョン番号が構成されている:

<major version>.<minor version>.<incremental version>-<qualifier> 

の場合すべてのバージョン番号が等しい場合、修飾子はアルファベット順に比較され、 "RC1"と "SNAPSHOT"は "a"と "b"とソートされません。 this pageを参考にしてください。

a.b.c-RC1-SNAPSHOTは、a.b.c-RC1より古いとみなされることに注意してください。

解決策として何を提案するのかよく分かりません。これはMavenのバージョン管理の仕組みです。

+0

自分自身のビジネス・ロジックを実装し、実装するにはあまりにも難しいことではありませんでしたがたくさん助け、thanks – mirlitone

+0

SNAPSHOTは、あなたが記述しているプロセスの外でmavenによって処理される特別な修飾子なので、半分だけ正しいです。参照:https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN401 –

1

仕様はmajor.minor.increment-qualifierでのみ動作しますが、beeingスナップショットなどとは関係なく、辞書順と比較して修飾されています。

私はmaven-versions-pluginをフォークし、リリース候補のスナップショット版は常にリリース候補よりも古いと考える独自のバージョン計画を実装しました。

これは私が提供されるリンクを

org/codehaus/mojo/versions/ordering/VersionComparators.java 

org/codehaus/mojo/versions/ordering/MavenVersionComparator 

と自身のクラスが宣言したから延長し、