2017-07-28 7 views
1

私はライブラリが少なく、その一部は別のライブラリに依存しています。だから、例えばのため:依存関係の1つが変更された場合、Mavenライブラリをリリースする必要がありますか?

1.0.0 なし目的

B 1.0.0 に依存します:1.0.0

質問は次のとおりです。

私は1.0.1にAを解放した場合このリリースは1.0.0と下位互換性があります。私はBをリリースする必要がありますか?

+1

1.0.1は1.0.1との下位互換性があるとのことAを保証することができますあなたの場合は新しいバージョンのBをリリースする必要はありません。バージョンスキーマでは、1.0.1はバグ修正を意味し、1.1.0は拡張を意味しますが、後方互換性(意味的バージョン管理)を意味するはずです。ドキュメント内のヒントユーザーのためにf Aを行う必要があります。 – khmarbaise

答えて

1

これは、コードの詳細と成果物の展開方法に大きく依存することがありますが、一般的には、コード変更をAで表示するにはBをリリースする必要があります。

  • Bがjarアーティファクトであり、別のクライアントがそのアーティファクトに<dependency>を持つとします。つまり、クライアントもAに推移的に依存しますが、Bの<dependency>で表された特定のバージョンでは、クライアントはB 1.0.0に依存しています。それ自体はA 1.0に依存しています.0、クライアントはA 1.0.0を推移的に拾うでしょう。 Aのバグ修正をこのクライアントに公開するには、A 1.0.1を指すように更新されたAの<dependency>でB 1.0.1をリリースする必要があります。
  • BがWebアプリケーションコンテナに配備された戦争アーティファクトであるとします。ウェブアプリケーションによって使用される各瓶<dependency>は、ビルドされた戦争のlibディレクトリ内に出荷されます。このWebアプリケーションにAのバグ修正を公開するには、A 1.0.1を指すように更新されたAの<dependency>でB 1.0.1をリリースする必要があります。最初の例で

、(クライアントは、JARとしてBに依存する)、可能な回避策は、おそらく、柔軟性のバージョンの範囲を使用して、Aの上に独自の明示的な<dependency>を添加することによりAのバージョンを上書きするクライアントのためのものです最新のリリース版を手に入れよう。これは、クライアントがBのビルドの一部として一緒にテストされなかったAのバージョンとBのバージョンを組み合わせていることを意味するので、メンテナンスの落とし穴を引き起こす可能性があります。一般に、Bをリリースすることが好ましいが、Bをリリースすることが困難な場合は、短期的な回避策として実行可能である可能性がある。推移的依存関係とバージョン範囲の文法上の

詳細はこちらをご利用いただけます:

+0

クリスありがとう!要点は「一般に、Bをリリースすることが好ましいが、Bをリリースすることが困難な場合は、短期的な回避策として実行可能である」と主張している。私はBをリリースすると思いますが、それは難しくありません。 –

+1

バージョン範囲を使用しないようにして、ビルドを再現できないようにします...より明示的に依存関係を上書きしてください....最も近い依存関係が勝ちます... – khmarbaise

+0

@khmarbaise、yes 、私は範囲のバージョン管理が嫌いです –

関連する問題