假设我计划开发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}设置为不同版本,但这会导致大量维护成本。 关于这个问题的任何想法?
答案 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>