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

问题描述 投票:0回答:1

我的 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 会自动处理这个问题?

java maven pom.xml artifactory maven-dependency
1个回答
3
投票

更好的方法是使用

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

参考:依赖管理

© www.soinside.com 2019 - 2024. All rights reserved.