我有一个依赖于hibernate-core 3.6.4.Final的项目,我们称之为“MyDatabaseProject”。
我有第二个项目,它是一个spring-cloud项目,它取决于MyDatabaseProject。
spring cloud项目使用spring-cloud-starter-parent Brixton.RELEASE作为它的父pom。
当我检查依赖项(使用“mvn dependency:list”)时,我看到我现在依赖于hibernate-core:4.3.11.Final,而不是3.6.4.Final。
如果我将spring-cloud-starter-parent版本切换回Angel.SR6,并检查依赖项(使用“mvn dependency:list”),我发现我对hibernate-core有依赖性:3.6.4就像我期望的那样。。
在我看来,Brixton.RELEASE中的某些内容会改变,它会覆盖hibernate-core版本。
我的问题是,这是一个错误,还是Brixton.RELEASE的无意改变?
如果是故意的,那么处理这个问题的正确方法是什么?
我尝试使用hibernate-core:3.6.4.Final将springManagement部分添加到spring cloud项目pom,这确实有效,但我不知道这是否是处理问题的正确方法。顶级项目似乎不关心低级项目使用的hibernate版本。
以下是spring cloud项目和数据库项目的最小maven poms:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>MySpringCloudProject</artifactId>
<version>1.0.0</version>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.RELEASE</version>
<!-- <version>Angel.SR6</version> -->
</parent>
<dependencies>
<dependency>
<groupId>example</groupId>
<artifactId>MyDatabaseProject</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>
数据库项目:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>MyDatabaseProject</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.4.Final</version>
</dependency>
</dependencies>
</project>