Решение проблемы корректная библиотека с maven: версия, управляемая с

#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, и совпадений не было.