Всем привет.
На работе есть крупный многолетний сервис на Java 11 и Spring Boot 2.1
В очередной доработке надо было начать ходить в другие сервисы, интеграции в которые ранее не было.
Выбрал между RestTemplate и WebClient последний в виду его актуальности.
Локально поднять рабочий проект та еще задача - собрать все БД и системы куда уже он ходит и ждать пока выдадут сетевые доступы.
Для ускорения разработки создал свой новый локальный проект, протестировал и перенес новый код в рабочий проект сервиса.
И вот тут при компиляции вылез сюрприз - некоторые функции следующих классов помечались как несуществующие :
- import org.springframework.http.HttpHeaders; (артифакт spring-web)
- import reactor.netty.http.client.HttpClient; (артифакт reactor-netty)
Сразу выполнил :
- mvn clean
- переподтянул зависимости проекта
- mvn install
- очистил кеш Intellij IDEA с выгрузкой проекта и рестартом IDE
Ничего из этого не помогло.
Для использования WebClient необходимо подключить единственный артифакт
spring-boot-starter-webflux.
Но оказалось, автоматически подтягиваются артифакты :
- spring-webflux
- reactor-netty
Когда сравнил версию этих артифактов (в тч
spring-web) в рабочем проекте и моем тестовом - они различались, в моем проекте версии были на порядок выше.
Предположил, что это из-за того, что под артифактом
spring-boot-starter-webflux явно не указана версия и подтягивается старая исходя как-то из немного устаревшего
spring-boot-starter-parent.
Явно указал в pom-е последнюю версию
spring-boot-starter-webflux - не помогло,
spring-webflux и
reactor-netty в зависимостях оставались устаревшими.
Артифакты
spring-web,
spring-webflux и
reactor-netty нигде в проекте ни в одном pom-е не заданы.
Задал их явно с указанием последних версий и проект после этого успешно скомпилировался.
На инфраструктуре компании сервис еще раз прогнался на тесты, собрался образ Docker и начался процесс установки на сервер.
И тут опять ошибка про отсутствие используемых функций в двух классах, ранее упомянутых.
Я не понимаю как Maven подтягивает старую версию артифактов когда задана уже конкретная версия в pom.xml
Задал версии в pom-е в скобках (н-р. [0.0.7] вместо 0.0.7) - тоже не помогло.
Может быть кто-то уже сталкивался с подобным или знает как иначе можно заставить Maven тянуть последнии/указанные версии артифактов?
Спасибо