2

すべてのプロジェクトはMavenを使用して構築されています。メイン構成の一部をスーパーpom内に一元化しました。

このスーパーpomの更新バージョンを(バージョンを変更せずに)常に保持するために、次の構文を使用しました。

<parent>
    <groupId>my.organization</groupId>
    <artifactId>superPom</artifactId>
    <version>RELEASE</version>
</parent>

問題は、Maven Eclipseプラグイン(m2e)がこの構文を理解しないことです(RELEASE定数は解決されません)。そのため、Eclipseユーザーは組み込みのコンパイルを使用できません。

この問題を克服するために何を提案しますか?

ちなみに、Mavenの観点からいくつかのオプション(特にここで説明するオプション)を試しましたが、version.RELEASEはすべての人(Eclipseを使用している人を除く)にとって最も簡単です。

編集:私たちのプロジェクトソースは複数のSVNリポジトリ内に分割されています。このスーパーポンは独立したプロジェクトです。Nexusサーバーから取得されます。

4

2 に答える 2

3

あなたは間違った方向に行こうとしています。Mavenのリリースは、1.0.0のような特定のバージョンであり、そのアーティファクトの状態が定義されていることを示します。あなたの場合、あなたのスーパーポンは特定の状態を持っています。バージョンを「RELEASE」に定義しようとしている場合、私のリリースは常に同じであると言っていますが、実際にはそうではありません。

通常、このようなスーパーpomは時間の経過とともに変化します。たとえば、今日、特定の依存関係バージョン(dependencyManagemet)を定義したとします。そして明日、あなたはそれらの定義を変更します。さて、1.000.000 $は、今日行われたビルドでスーパーpomのどの状態が使用されているかを質問しますか?その単純なシナリオでは、質問に答えることはできますが、昨日スーパーpomを変更した場合、質問に正確に答えることはできません。

さらに、先週のアーティファクトを再現しようとすると、その特定の時間に使用されたスーパーpomの正確な状態を言うことができず、それを見る機会を与えるインジケーターがありません。

そして、それが1.0.0や1.1.0などの実際のバージョンが必要な理由です。

1.0.0などの実際のバージョンを使用することを強くお勧めしますが、Mavenシステムのコーディネイトグループ、アーティファクト、およびバージョンに忍び寄る「RELEASE」のようなものは使用できません。

于 2012-09-11T15:03:02.130 に答える
2

バージョン範囲と展開は、実際には親アーティファクトでは機能しません

代わりにバージョンプラグインを呼び出すように誰かがアドバイスしました:

mvn versions:update-parent 

これはあなたのニーズを正確にカバーするものではありませんが、これ以上の回避策はありません. その他のアイデア : SNAPSHOT 親 pom を使用します (あまり満足のいくものではありません)。Maven2 cannot find parent from relative pathも参照してください。

于 2012-09-11T15:32:40.830 に答える