Ако библиотека декларира предоставена зависимост от например servlet-api, използвайки v3.0.1; възможно ли е потребителите да използват версия 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 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
обработва дублиращи се класове в classpath (вярвам, че първият намерен печели) и как Maven конструира classpath като начало. - person millimoose   schedule 14.05.2013