我的 pom.xml 中有一个 spring batch 依赖项声明如下:
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
上面1.4.7版本包含一个神器xstream,需要更新到1.4.11.
可以添加如下:
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.11</version>
</dependency>
正确的方法是什么?我正在考虑以下方法:
以上两段代码都会存在,但我是否需要使用 < exclusions > 从 spring-batch-core 中专门排除 xstream artifact old version 还是 maven 会自动处理这个问题?
更好的方法是使用
<dependencyManagement/>
标签。依赖管理将确保版本将得到维护,即使某些其他传递依赖带来更高版本的依赖。
用法:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.11</version>
</dependency>
</dependencies>
</dependencyManagement>
注意:
dependencyManagement
标签用于定义依赖项的版本和范围(如果不在编译的默认范围内)它不会将其中的依赖项添加到您的项目中,您必须在中定义单独的<dependencies/>
部分您的 pom.xml 用于将依赖项添加到您的项目。
在你的情况下它会像。
<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">
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.11</version>
</dependency>
</dependencies>
...
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
<version>3.0.9.RELEASE</version>
</dependency>
...
</dependencies>
...
</project>
在这种情况下,
spring-batch-core
被添加为直接依赖项,如果它具有xstream
作为依赖项,您的项目将使用1.4.11
版本,即使spring-batch-core
具有不同版本的xstream
作为依赖项。
参考:依赖管理