Если библиотека объявляет предоставленную зависимость, например, от servlet-api с использованием версии 3.0.1; смогут ли пользователи использовать версию 2.5 для своей библиотеки, которая будет использоваться в стороннем веб-приложении?
Другими словами:
mylib (srv 3.0.1) <-- some_framework(srv 2.5) <-- user_webapp (tomcat 6 or 7)
Более того: версия 2.5 объявлена как javax.servlet:servlet-api:2.5, а версия v3.0.1 объявлена как javax.servlet:javax.servlet-api:3.0.1. strong>, так что разница есть.
Будет ли проблемой для some_framework указать другую зависимость servlet-api (например, 2.5), чем определено в mylib (например, 3.0)? Я предполагаю, что поскольку область предоставляется (и доступна только во время компиляции), инструменты зависимостей (mvn, gradle...) не будут загружать ее в some_framework, и у них есть (и разрешено) объявлять зависимость вручную.
(да, я знаю о различиях между 3.0 и 2.5, и это не вопрос. Я также предполагаю, что все компилируется правильно и т. д. Мне просто интересно, как maven будет компилировать some_framework, от которого зависит: 2,5 или 3?).
x/pom.xml
я могу объявить, что он должен игнорировать (исключать) данную зависимость от Y. (Что я бы и сделал, если бы я авторsome_framework
в вашем примере.) Тем не менее, если вы не сделаете это явно, я предполагаю, что Maven просто скомпилирует ваш проект против обоих. - person millimoose   schedule 14.05.2013javac
обрабатывает повторяющиеся классы в пути к классам (я считаю, что первый найденный выигрывает) и как Maven создает путь к классам для начала. - person millimoose   schedule 14.05.2013