#maven
Вопрос:
Я использую Google Guava в своем проекте.
Я явно указываю эту версию библиотеки в одной из нижестоящих библиотек:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
Но когда я использую свою библиотеку в проекте, это приводит к неправильной версии Guava:
[INFO] | - com.google.guava:guava:jar:28.2-android:compile
[INFO] | | - com.google.guava:failureaccess:jar:1.0.1:compile
[INFO] | | - com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[INFO] | | - com.google.code.findbugs:jsr305:jar:3.0.2:compile
Я запустил maven dependency:tree
в подробном режиме, и я вижу:
[DEBUG] com.google.guava:guava:jar:28.2-android:compile (version managed from 19.0)
[DEBUG] com.google.guava:failureaccess:jar:1.0.1:compile
[DEBUG] com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
[DEBUG] com.google.code.findbugs:jsr305:jar:3.0.2:compile
[DEBUG] org.checkerframework:checker-compat-qual:jar:2.5.5:compile
[DEBUG] com.google.errorprone:error_prone_annotations:jar:2.3.4:compile
Что это version managed from
значит? У меня нет нигде в моей версии проекта 28.2-android
. Как это решается с этим?
Комментарии:
1. Тогда что-то еще втягивает Гуаву.
2. Как мне обнаружить это в maven? Дерево зависимостей этого не показывает.
3. Maven deps являются исчерпывающим AFAIK; если дерево не показывает переходную зависимость при запуске проекта «верхнего уровня», я не уверен, что вам сказать-оно должно.
Ответ №1:
Выражение «версия, управляемая с» означает, что был задан номер версии <dependencyManagement>
.
Это часто делается в родительских помпонах. Это может быть указано напрямую или также с помощью так называемой спецификации, которая загружается <scope>import</scope>
.
Комментарии:
1. Как вы думаете, это может быть установлено одной из библиотек Spring?
2. Я бы взглянул на ваш родительский ПОМ и посмотрел, найдете ли вы его.
3. Нет, его там нет, но спасибо за вашу помощь!
4. Он должен быть где-то в родительском ПОМЕ или в его родительском ПОМЕ. Это может быть импортированная спецификация.
5. Как мне найти «оскорбительную» зависимость? Я искал версию этой банки во всем моем местном репо maven, и совпадений не было.