如何覆盖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
作为依赖项。
我的 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>
正确的方法是什么?我正在考虑以下方法:
以上两段代码都会存在,但我是否需要使用
更好的方法是使用 <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
作为依赖项。