2009-06-19 6 views
4

私は最近、配布された成果物に一意のタイムスタンプバージョンを使用するように設定されたプロジェクトにMavenスナップショット構築機能を追加しました。しかし、これが正しいこと(スナップショットは企業のようなエンティティだけでなく、公開されたリポジトリの1つに配備されている)が適切かどうかについていくつかの混乱があります。スナップショットを使用しようとすると問題が発生すると言う人もいます。Mavenベストプラクティス:スナップショットリリースのタイムスタンプを含むかどうか

Mavenがどのようにコンベンションに基づいているかを知り、ベストプラクティスを認識した後、どのオプションを選択するかについていくつかのガイドラインがあることを願っています。

(注:私はタイトルをわずかに編集しました - パブリックスナップショットバージョン用のユニークなタイムスタンプ、デプロイオプションを含むメリット(またはその欠如)は特に興味深いです;タイムスタンプを使用するかどうかはあまりありません含まれていますが、それは明らかに多少関連した質問です)

答えて

0

スナップショットの全ポイントは、誰かに最新バージョンのコードを使用させることです。なぜ5つのバージョンのスナップショットを使用したいのですか?

これを念頭に置いて、アーティファクト名のタイムスタンプは何を購入しますか?

私はMavenを約5年間使用しています。私は名前のタイムスタンプを持つスナップショットジャーを見たことがない。

+0

ありがとうございます! 私は、このオプションの本来の意図を知らないが、私の推測では、タイムスタンプが2人の意図の1果たすことができました:キャッシングとは無関係に、再現性が *最新バージョンが使用されていることを確認します(スナップショットの特定instante)を構築する許可* をか(スナップショットのアーティファクト名が変更されているので、それは何も問題はない) しかし、私が尋ねた理由は:これらが有効であるかどうかわかりません。 :-) 私はこのオプションを見て、いくつかのプロジェクト(Enunciateなど)がスナップショットにタイムスタンプを使用しているのを見ました。 – StaxMan

+0

5つのバージョンのスナップショットは、テストしたものであるため、使用することをお勧めします。場合によっては、最後のリリースよりも新しいもの(たとえば、新しい機能のため)が必要になることもありますが、次のリリースは期限切れではありません。スナップショットを選択してテストします。 – derobert

1

通常、常に-SNAPSHOT依存関係に対してビルドする必要があります。ただし、-SNAPSHOTの依存関係が含まれている場合は、製品をリリースしないでください。 Maven Release Plug-inを使用してリリースを自動化する場合は、リリースプラグインまたは依存関係を使用していないことを確認します。

しかし、必ずしもそうであるとは限りません。スナップショットビルドに基づいて何かをリリースする必要がある場合は、-SNAPSHOTバージョン命名規則ではなく、明示的なタイムスタンプ/ビルド番号を使用する場合です。

Versions Maven Pluginを使用して自動化することができます。 POMのスナップショットバージョンのロックとロック解除の目標を提供します。

+0

ありがとうございます。私の場合は、(少なくともこの質問の目的のために)スナップショットを使っているわけではありません。しかし、それは役に立ちます:リポジトリにタイムスタンプがなければ、それらを使用する依存関係を宣言することはできません。それがタイムスタンプを含む理由です。 – StaxMan

関連する問題