Идеальным решением было бы обновить все до Spring 5 или развернуть payment.jar отдельно, как микросервис, как уже упоминалось. Но это не основная часть вашего вопроса, может быть, у вас есть некоторые неизбежные требования. Итак, как сказал @ tomer-shahar, решение состоит в том, чтобы использовать maven shade plugin .
Подобные конфликты часто случаются, когда вы используете библиотеки с открытым исходным кодом, использующие одни и те же библиотеки, но с разными версиями.
Плагин maven shade позволяет переименовывать / переопределять выбранные пакеты, избегая конфликтов внутри версий. Недостатком является то, что некоторые классы будут дублироваться (так что это далеко от идеала). Смотрите пример ниже:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>spring321-payment-shaded</finalName>
<relocations>
<relocation>
<pattern>spring.package</pattern>
<shadedPattern>shaded.spring.package</shadedPattern>
</relocation>
</relocations>
<artifactSet>
<includes>
<include>*:*</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
</plugin>
А затем добавьте в качестве зависимости к проекту Spring 5 эту затененную библиотеку со всем выполненным переименованием / перераспределением. Я использовал эту интересную статью , где все детали полностью описаны.