java - Maven:为什么在父pom中声明的依赖项没有被子pom继承?
问题描述
当我在父 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>deps</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<!-- not relevant for this question -->
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.12</version>
</dependency>
</dependencies>
</project>
上面我已经声明spring-core
为父 pom 的依赖项。
现在在子 pom 中,我正在导入父 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>deps2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.demo</groupId>
<artifactId>deps</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- not relevant for this question -->
</dependencies>
</project>
现在查看子 pom 继承的依赖项,没有。spring-core
在所有情况下,子项目都不应该继承 jar。由于父 pom 直接依赖于这个 jar 并且它不是由子项目传递/继承的。
注意:这个问题不是关于依赖管理和版本
我理解的dependencyManagement,它是为了确保一组项目具有相同的版本和依赖范围。
解决方案
您的孩子 pom 是一个独立的 pom,因为您没有指定父母。您可以通过添加此标签来定义父级:
<parent>
<groupId>yourpackage</groupId>
<artifactId>yourartifactid</artifactId>
<version>version</version>
</parent>
在您的情况下,此块应该可以解决问题:
<parent>
<groupId>com.demo</groupId>
<artifactId>deps</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
我知道您的问题与依赖管理无关;但对于那些不知道区别的人,我会写一些关于它的文字。
请注意,通过导入您的 pom,<dependenciesManagement>
您不会产生任何影响,因为它只定义了使用意图,而不是具体的导入。包含具体的<dependencies>
导入,它只是您可以在应用程序中使用的内容。
推荐阅读
- getstream-io - Getstreams.io 中是否可以使用流层次结构?
- javascript - javascript 将 Blob 网址返回给我
- c++ - Boost.Asio 是在帖子之后调用的处理程序吗?
- reactjs - 反应原生 | 标题道具按钮必须是字符串
- java - 在 Tomcat 上部署的 Spring Boot 应用程序创建错误的 URL
- excel - 有没有人可以告诉我我错过了这些代码?
- css - 表单布局在移动设备上不灵活
- android - 如何使用 sparkjava 框架 webserver 和 Android 设备发送大文件?
- javascript - 为什么我在使用 Vue/Nuxt 时会遇到 fontawesome 星星的间距问题?
- c++ - 为什么使用implicit_cast
(int) 而不是 static_cast (整数)?