SDK支持diff spring版本

时间:2016-08-25 08:10:19

标签: java spring maven spring-mvc middleware

假设我计划开发SDK,并且这个SDK应该支持不同的spring版本,例如spring 2.x,spring 3.x和spring 4.x,只有很少的依赖项SDK,

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

一种方法是将$ {spring.version}设置为不同版本,但这会导致大量维护成本。 关于这个问题的任何想法?

2 个答案:

答案 0 :(得分:1)

首先,尽可能避免使用Spring依赖项;例如,通常只需要为spring-context注释包含@Component。假设您可以避免前向不兼容,只需针对最早的兼容Spring进行构建。例如,为Spring 3.2编译的组件通常在Spring 4.3中没有问题。

但是,如果需要使用新Spring版本的功能,最好的方法是完全创建一个新工件。例如,当Thymeleaf需要使用仅在Spring 4中添加的功能it split into thymeleaf-spring3 and thymeleaf-spring4时。这确实需要您付出更多努力,但会使所有用户的构建和过渡更加顺畅。

答案 1 :(得分:1)

如果您打算在所有弹簧版本中仅使用几个类和具有相同签名的方法,我建议您专门查看表中的Understanding Maven Version Numbers 表7-1版本范围参考。举个例子,当你看到版本[1.2,1.3]意味着1.2&lt; = x&lt; = 1.3。

对于您的情况,您必须将属性“spring.version”调整为:

<properties>
    <spring.version>[2.0,4.3]</spring.version>
</properties>