许多罐子库版本兼容性

时间:2015-05-20 20:55:19

标签: java hibernate maven version

例如,我的pom.xml中有以下hibernate内容:

<!-- Hibernate -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.3.1.GA</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.common</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>4.0.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-envers</artifactId>
            <version>3.6.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.10.Final</version>
        </dependency>

现在它运作良好。但此刻我需要将hibernate核心的版本更改为5.我害怕我的变化。据我所知,如果库具有后向兼容性,则很少见。但在改变主要版本后,这绝对是不可能的。

如何确定剩余休眠内容的各个版本?

2 个答案:

答案 0 :(得分:1)

通常团队(在这种情况下为Hibernate)应提供其各种库的兼容性矩阵。

即使他们不这样做,通常也不难确定自己。所有库的最新版本通常应兼容,因此如果您打算将所有库升级到最新版本,升级可能会顺利进行。

在您的情况下,hibernate-corehibernate-envershibernate-entitymanager显示为follow the same version个,因此您可以将5.0.0.Beta2用于这些库。只需使用libraries其余部分的最新版本(几乎所有版本都看起来像实用程序,所以我希望它们与上面的核心库兼容)。

您将不得不尝试使用这些组合来查看哪个有效。在这些情况下,拥有一套强大的测试套件通常会有所帮助。

答案 1 :(得分:0)

Maven物料清单(BOM)提供了这样一个功能,我们可以在其中包含我们需要的工件,但是不需要显式定义版本,并且将从bom文件中引用版本,这将有助于维护最新版本的定义的工件。 此链接提供了更多详细信息和示例: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

另一个我发现的JBoss示例: http://www.mastertheboss.com/jboss-frameworks/maven-tutorials/jboss-maven/maven-and-jboss-how-to-use-boms