繁体   English   中英

使用 BOM 时的传递依赖问题

[英]Problem with transitive dependency while using BOM

可以说我有
1.一个bom项目(命名为bom)
2.一个jar项目(命名为A)
3.一个战争项目(命名为B)

bom 项目的 jackson-data 版本在属性中为 2.8.5 和 2.8.1,在 jackson-data 的依赖管理部分 2.8.5 中。

继承 bom 的项目 A 在 2.8.1 版本中声明了 jackson-data 依赖项。

项目B依赖于项目A并继承bom。 它没有在其依赖项中声明杰克逊数据

现在,当我查看项目 B 的 lib 目录时,jackson-data 版本是 2.8.5,而项目 A 将其声明为 2.8.1。

无论在依赖项中声明了什么,它都采用 bom 中声明的版本。 有没有办法解决项目 B 中杰克逊数据的传递依赖关系,因为它在项目 A 中声明意味着使用 bom 时的版本是 2.8.1 而不是 2.8.5?

下面是pom


物料清单项目

 <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"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>bom</artifactId> <version>1.1</version> <packaging>pom</packaging> <properties> <jackson-databind.version>2.8.5</jackson-databind.version> <jackson-databind.version.A>2.8.1</jackson-databind.version.A> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.test</groupId> <artifactId>A</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson-databind.version}</version> </dependency> </dependencies> </dependencyManagement>

项目A的pom

 <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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.test</groupId> <artifactId>bom</artifactId> <version>1.1</version> </parent> <groupId>com.test</groupId> <artifactId>A</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.1</version> </dependency> </dependencies> </project>

项目B

 <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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.emirates.ibe</groupId> <artifactId>bom</artifactId> <version>1.1</version> </parent> <groupId>com.test</groupId> <artifactId>B</artifactId> <version>1.0</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>com.test</groupId> <artifactId>A</artifactId> </dependency> </dependencies> <build> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <warName>B</warName> <warSourceDirectory>WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> </project>

DependencyManagement 覆盖传递依赖。 这就是这里发生的事情(这就是它的本意)。

如果您想要不同的版本,请更改 dependencyManagement 或在您使用 A 的项目中覆盖

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM