Весеннее обновление версии ядра в весенней загрузке родительского стартера 1.5.10.RELEASE
Вот мавенская зависимость у меня
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
то, чего я пытаюсь добиться, это изменить ядро пружины с 4.3.14.RELEASE на 4.3.4.RELEASE. Да, по умолчанию пружинный загрузчик использует пружинное ядро 4.3.14, которое может быть расширено до 5.0.7.RELEASE, для этого я попытался исключить пружинное ядро и в том числе с 4.3.4.RELEASE
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
</exclusions>
<scope>import</scope>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
</dependencies>
Когда я пытался построить это бросает следующее ожидание
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChainProxySecurityConfigurer' parameter 1; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.convert.support.DefaultConversionService.getSharedInstance()Lorg/springframework/core/convert/ConversionService;
Вручную добавить каждую и каждую зависимость невозможно, потому что приложение использует чертовски много зависимостей, и совместимость с другими зависимостями была бы другой сложной задачей.
Так есть ли обходной путь для этого?
ПРИМЕЧАНИЕ:- пытался работать с spring framework-bom и spring IO, но пока не нашел решения, может я что-то упустил. Примеры тех приветствуются.
1 ответ
Вы не должны делать это на самом деле. Spring Framework > Spring Boot > Spring Cloud > Data Flow - все управляют этими зависимостями по определенной причине. Вы должны позволить Spring обрабатывать зависимости и обновлять ваши реализации по мере необходимости.
https://spring.io/blog/2016/04/13/overriding-dependency-versions-with-spring-boot
Ответы на это более подробно.
Разумно хотеть сделать это, но это следует делать с осторожностью, потому что более новые версии переходных зависимостей могут легко сломать функции, которые полагаются на более старую версию в Spring Boot. Когда вы делаете это и применяете одно из приведенных ниже исправлений, вы отрываетесь от управления зависимостями Spring Boot и говорите: "Эй, я знаю, что я делаю, поверьте мне". К сожалению, иногда вам нужно сделать это для того, чтобы воспользоваться новыми возможностями в сторонних библиотеках. Если вам не нужна новая версия Reactor (или любая другая необходимая вам внешняя транзитивная зависимость), не делайте этого, просто придерживайтесь счастливого пути и позвольте Spring Boot управлять зависимостями.