18

私はしばしば、Maven(通常はgithub上)を使用するJavaプロジェクトをフォークする必要があります。

プロジェクトをフォークして変更を加えるときは、通常、自分のプライベート(ただしインターネット上)のMavenリポジトリーへのリリースをカットしたいと思います。

したがって、私のカスタムリリースのバージョンラベルはどうあるべきかという問題です。SNAPSHOTリリースである必要があるので、私はできません。時々私はプロジェクトに接尾辞を付けます.ADAMGENT(私はナルシストだからです)。私がフォークしたとしましょう1.0.4-SNAPSHOT。に変更する場合があり1.0.4.ADAMGENTます。それが良い考えかどうかはわかりません。場合によっては.ADAMGENT、SpringのGradleビルドツールがそれを好まないため、接尾辞を付けることさえできません。.ADAMGENT.RELEASEですから、Springプロジェクトの場合、私はそうし.ADAMGENT.M1ます。

他の人は何をしますか?

更新: フォークと言いましたが、パッチレベルの変更についてもっと説明します。一方、(別のユーザーによる)バウンティは、フォークやパッチに対するものである可能性があります

4

4 に答える 4

5

私は通常、アップストリームバージョンに基づいて作成する複数のリリースを混乱させないように、サフィックス(名前など)と実行番号を追加します。セットアップでは、これはおそらく次のように変換されます。

1.0.4-ADAMGENT-1

1.0.4-ADAMGENT-2その後、別の変更を行う必要がある場合に備えて、これが続きます。

artifact元のプロジェクトのとIDを確実に保持し、group変更のベースとなるバージョンも保持します。これは、作業中のバージョンを確認する必要がある場合に、後で役立ちます。また、変更がアップストリームに含まれている場合は、公式バージョンへの切り替えが簡単になります。

于 2012-05-03T09:39:00.257 に答える
2

スナップショットの場合は、元のリビジョン番号 (git で可能ですか?) またはフォークした日付を ADAMGENT で使用することをお勧めします (独自のサフィックスを追加することをお勧めします)。

例えば

1.0.4-2011-09-12.ADAMGENT
于 2012-05-02T14:35:18.803 に答える
1

私は独自の解決策を思いつきました。@DavidHにはいくつかの有効なポイントがあると思うので、正しいとマークしません。MavenにIvyがgroupidを置き換えるレベルの構成があれば(および/またはsonatypeでその方法を見つけた場合)、おそらくマークします正しい。それ以外の場合、フォークは別の名前空間である必要があり、Java パッケージ名はプロジェクトのグループ ID と多少一致する必要があると固く信じています。また、私の状況では、バグ修正のためにこれを行う必要があることが多いため、フォークではありません。

これは私が行うことであり、maven がバージョン番号を読み取る方法と、Sonatype が多少行うことに基づいています。

最初に、自分のバージョンを公開する独自のパブリックであるが中央ではないリポジトリをセットアップします。このようなリポジトリをホストするには、github や googlecode を使用できます。これを行う方法とそれに公開する方法に関するガイドがネット上にあるので、ここでは説明しません。

私の質問で述べたように、Spring のビルドシステムには奇妙な要件があるため、バージョン番号については、Spring を除いてこの形式に従います。

1.0.4-ADAMGENT-1

さらにいくつかの変更とリリース:

1.0.4-ADAMGENT-2

コードを見ると、Maven がこの形式をほとんど理解できることがわかります。問題はADAMGENT予選です。Maven は、いくつかの修飾子"alpha"、"beta"、"milestone"、"rc"、"snapshot"、""、"sp"` および "ga"、"final"、"cr"のみを適切に理解します。

そうでないものは字句順 (ADAMGENTこの場合) であり、問​​題がある場合はインクリメンタル バージョン ( ) をアップできると思います4

于 2013-12-05T17:36:58.540 に答える