Конфликт версий зависимостей Maven: приложение использует данные Spring Neo4j и данные Spring JPA
Вот зависимости в моем pom.xml,
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<!--<version>1.1.4.RELEASE</version> -->
<version>2.0.7.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<!-- Import dependency management from Spring Boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.4.0.RELEASE</version>
<!--<version>1.2.7.RELEASE</version> -->
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Hopper-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<version>4.1.0.RC1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
и многие другие зависимости
Мое приложение использует in-memory-derby (встроенный профиль)/MySQL(удаленный профиль) для хранения транзакционных данных и графическую базу данных Neo4j для обработки иерархического хранения данных. Мое требование - запускать Neo4j как в удаленном, так и во встроенном режиме на основе профиля maven. По умолчанию менеджер версий Spring использует более старую версию Spring-data-neo4j (3.xx), но встроенная поддержка Neo4j доступна только после выпуска 4.0.0. Когда я создаю свое приложение с конфигурацией, показанной выше, я получаю ошибку, как показано ниже,
// ...exception stacktrace
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'locationRepository': Invocation of init method failed; nested exception is java.lang.AbstractMethodError
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
... 57 common frames omitted
Caused by: java.lang.AbstractMethodError: null
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:416)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:206)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237)
at org.springframework.data.neo4j.repository.support.GraphRepositoryFactoryBean.afterPropertiesSet(GraphRepositoryFactoryBean.java:43)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 67 common frames omitted
Я предполагаю, что эта ошибка из-за конфликтующих версий Spring-data-commons. Есть ли способ обойти эту ошибку?
1 ответ
Hopper-SR2 поддерживает Spring-data-neo4j 4.1.2. Почему вы переходите на 4.1.0.RC1? Попробуйте удалить, чтобы понизить или явно установить его на 4.1.2.
Если вы все еще думаете, что получаете версию 3.x, запустите ниже и посмотрите, что тянет в версии 3.x.
mvn dependency:tree -Dverbose -Dincludes=spring-data-neo4j
Вы можете использовать тот же процесс для поиска конфликтов с spring-data-commons. Просто измените параметр include (или опустите его для всех зависимостей). Если вы обнаружите конфликт, явно включите правильную версию в ваш pom.xml.