私はライブラリが少なく、その一部は別のライブラリに依存しています。だから、例えばのため:依存関係の1つが変更された場合、Mavenライブラリをリリースする必要がありますか?
1.0.0 なし目的
B 1.0.0 に依存します:1.0.0
質問は次のとおりです。
私は1.0.1にAを解放した場合このリリースは1.0.0と下位互換性があります。私はBをリリースする必要がありますか?
私はライブラリが少なく、その一部は別のライブラリに依存しています。だから、例えばのため:依存関係の1つが変更された場合、Mavenライブラリをリリースする必要がありますか?
1.0.0 なし目的
B 1.0.0 に依存します:1.0.0
質問は次のとおりです。
私は1.0.1にAを解放した場合このリリースは1.0.0と下位互換性があります。私はBをリリースする必要がありますか?
これは、コードの詳細と成果物の展開方法に大きく依存することがありますが、一般的には、コード変更をAで表示するにはBをリリースする必要があります。
<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をリリースする必要があります。<dependency>
は、ビルドされた戦争のlib
ディレクトリ内に出荷されます。このWebアプリケーションにAのバグ修正を公開するには、A 1.0.1を指すように更新されたAの<dependency>
でB 1.0.1をリリースする必要があります。最初の例で、(クライアントは、JARとしてBに依存する)、可能な回避策は、おそらく、柔軟性のバージョンの範囲を使用して、Aの上に独自の明示的な<dependency>
を添加することによりAのバージョンを上書きするクライアントのためのものです最新のリリース版を手に入れよう。これは、クライアントがBのビルドの一部として一緒にテストされなかったAのバージョンとBのバージョンを組み合わせていることを意味するので、メンテナンスの落とし穴を引き起こす可能性があります。一般に、Bをリリースすることが好ましいが、Bをリリースすることが困難な場合は、短期的な回避策として実行可能である可能性がある。推移的依存関係とバージョン範囲の文法上の
詳細はこちらをご利用いただけます:
クリスありがとう!要点は「一般に、Bをリリースすることが好ましいが、Bをリリースすることが困難な場合は、短期的な回避策として実行可能である」と主張している。私はBをリリースすると思いますが、それは難しくありません。 –
バージョン範囲を使用しないようにして、ビルドを再現できないようにします...より明示的に依存関係を上書きしてください....最も近い依存関係が勝ちます... – khmarbaise
@khmarbaise、yes 、私は範囲のバージョン管理が嫌いです –
1.0.1は1.0.1との下位互換性があるとのことAを保証することができますあなたの場合は新しいバージョンのBをリリースする必要はありません。バージョンスキーマでは、1.0.1はバグ修正を意味し、1.1.0は拡張を意味しますが、後方互換性(意味的バージョン管理)を意味するはずです。ドキュメント内のヒントユーザーのためにf Aを行う必要があります。 – khmarbaise