ライブラリがv3.0.1 を使用して、たとえばservlet-apiに対する提供された依存関係を宣言する場合。ユーザーがサードパーティの Web アプリケーションで使用されるライブラリにバージョン 2.5 を使用することは可能ですか?
言い換えると:
mylib (srv 3.0.1) <-- some_framework(srv 2.5) <-- user_webapp (tomcat 6 or 7)
さらに、v2.5 はjavax.servlet:servlet-api:2.5として宣言され、バージョン v3.0.1 はjavax.servlet:javax.servlet-api:3.0.1として宣言されているため、違いがあります。
some_frameworkが、mylib で提供されている定義 (3.0 など) とは異なる servlet-api 依存関係 (2.5 など) を指定することは問題になりますか? スコープが提供されている(そしてコンパイル時にのみ利用可能である)ので、依存関係ツール(mvn、gradle ...)はsome_frameworkでそれをダウンロードせず、依存関係を手動で宣言する必要がある(そして許可されている)と思います。
(ええ、私は 3.0 と 2.5 の違いを認識していますが、それは問題ではありません。また、すべてが正しくコンパイルされると想定しています。また、maven がsome_frameworkをどのようにコンパイルするのか、依存関係: 2.5 または 3?) に興味があります。