如何覆盖maven中工件包含的库的默认版本?

How to override default version of library included by artifact in maven?

我的 pom.xml 中有一个 spring 批处理依赖项,声明如下:

           <dependency>
            <groupId>org.springframework.batch</groupId>
            <artifactId>spring-batch-core</artifactId>
            <version>3.0.9.RELEASE</version>
        </dependency>

有一个工件 xstream 包含在上面的版本 1.4.7 中,需要更新到 1.4.11。

可以添加如下:

    <groupId>com.thoughtworks.xstream</groupId>
    <artifactId>xstream</artifactId>
    <version>1.4.11</version>
    </dependency>

正确的方法是什么?我正在考虑以下方法:

以上两段代码都会存在,但我是否需要使用 从 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标签用于定义依赖项的版本和范围(如果不在默认范围内,即编译)它不会将其中的依赖项添加到您的项目中,您必须定义pom.xml 中单独的 <dependencies/> 部分,用于向项目添加依赖项。

在你的情况下它会像。

<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 作为依赖项。

参考:Dependency Management