如果一个库使用 v3.0.1声明提供了对例如servlet-api 的依赖;用户是否可以将 2.5 版用于他们的库,将用于第三方 Web 应用程序?
换句话说:
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 中提供的不同的 servlet-api 依赖项(例如 2.5)(例如 3.0)会不会有问题?我假设由于提供了范围(并且仅在编译时可用),依赖工具(mvn,gradle ...)不会在some_framework中下载它,并且它们已经(并且被允许)手动声明依赖关系。
(是的,我知道 3.0 和 2.5 之间的差异,这不是问题。我还假设一切都正确编译,等等。我只是感兴趣 maven 将如何编译some_framework,依赖于:2.5 还是 3?)。