Как лучше изменить версию транзитивной зависимости в maven?
Ссылка скопирована
Всем доброго времени!
По вводным: пытаюсь подружить проект наSpring boot версии 3.5.7По вводным: с корпоративным репозиторием.
Проблема сSpring-boot-maven-pluginОн тянет транзитивноCommons-lang3:3.16.0Нужно понять: а он запрещен в моем репозитории, возвращается статус 403 и сборка падает... Как мне поднять commons-lang3 до версии 3.20.0?
Пытаюсь сделать вот так:
<pluginManagement> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>3.5.7</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-buildpack-platform</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-compress</artifactId> <version>1.28.0</version> <exclusions> <exclusion> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.20.0</version> </dependency> </dependencies> </plugin> </plugins> </pluginManagement>
Выдает ошибку
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.5.7:repackage (repackage) on project demo1: Execution repackage of goal org.springframework.boot:spring-boot-maven-plugin:3.5.7:repackage failed: Plugin org.springframework.boot:spring-boot-maven-plugin:3.5.7 or one of its dependencies could not be resolved: Failed to collect dependencies at org.springframework.boot:spring-boot-maven-plugin:jar:3.5.7 -> org.springframework.boot:spring-boot-loader-tools:jar:3.5.7 -> org.apache.commons:commons-compress:jar:1.27.1 -> org.apache.commons:commons-lang3:jar:3.16.0: Failed to read artifact descriptor for org.apache.commons:commons-lang3:jar:3.16.0: The following artifacts could not be resolved: org.apache.commons:commons-lang3:pom:3.16.0 (absent): Could not transfer artifact org.apache.commons:commons-lang3:pom:3.16.0 from/to rt-central (https://company-repository.ru/repository/maven-repo.maven.apache.org): status code: 403, reason phrase: Forbidden (403) -> [Help 1]
Буду признателен любым советам!
Нужно решить такую задачу?
Заказать помощь
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Лучший ответ
1
Другие ответы (0)
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопроскомментарий
Вам также может быть интересно
печатные-платы
Как заставить запускаться программу M3.exe от компании Hanxing AOI в инспекционной машине на Windows 7 Pro?
1 ответ
VPN
Как правильно настроить vless для Android TV?
1 ответ
Pyrogram
Как правильно зарегистрировать юзер бота в Telegram?
1 ответ
linkedin
Из-за чего выкидывает из аккаунта LinkedIn?
1 ответ

В Maven версию транзитивной зависимости лучше менять через
dependencyManagement, а не добавлять случайную прямую зависимость без понимания дерева.dependencyManagementпозволяет зафиксировать версию, которую Maven будет использовать, когда эта библиотека приходит транзитивно.Сначала посмотрите дерево зависимостей:
mvn dependency:tree -Dincludes=groupId:artifactIdmvn dependency:tree -Dincludes=groupId:artifactId
Затем в родительском
pom.xmlили в pom модуля добавьте управление версией:<dependencyManagement> <dependencies> <dependency> <groupId>com.example</groupId> <artifactId>library</artifactId> <version>1.2.3</version> </dependency> </dependencies> </dependencyManagement>
Если используется Spring Boot, лучше учитывать BOM. Boot сам управляет версиями многих зависимостей. Переопределять их можно, но нужно понимать совместимость. Иногда правильнее обновить версию Spring Boot, чем вручную поднимать одну библиотеку.
Если конфликтует конкретная транзитивная зависимость, можно исключить её у источника и добавить нужную версию явно:
<exclusions> <exclusion> <groupId>com.example</groupId> <artifactId>bad-lib</artifactId> </exclusion> </exclusions>
После изменения проверьте дерево снова и запустите тесты. Maven может выбрать не ту версию из-за nearest definition wins, особенно в multi-module проектах.
Итог: сначала
dependency:tree, затемdependencyManagement. Exclusion используйте точечно. В Spring Boot проектах не ломайте BOM без причины: если переопределяете версию, обязательно проверьте совместимость и тесты.