如何解决我无法使用Maven在子模块中使用继承的依赖项
我具有以下项目结构:
我想在模块B和C中使用相同的依赖项(我们称之为**dep-for-B-and-C**
)。
A
├── B
│ └── pom.xml
├── C
│ └── pom.xml
│
└── pom.xml
root'A'pom.xml:
...
<groupId>my-group-id</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>B</module>
<module>C</module>
</modules>
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>***</groupId>
<artifactId>dep-for-B-and-C</artifactId>
<version>***</version>
</dependency>
</dependencies>
</dependencyManagement>
“ B”和“ C”子模块pom.xml:
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>***</groupId>
<artifactId>dep-for-B-and-C</artifactId>
</dependency>
...
如果我将dep-for-B-and-C
作为A和B的依赖项,那么在运行mvn clean install
之后,会出现以下错误:
[ERROR] 'dependencies.dependency.version' for ***:dep-for-B-and-C-jar:jar is missing. @ line 39,column 21
如果我没有在我的子pom.xml中放置依赖项(我正在使用dependencyManagement,所以应该放置它,但是我不需要指定版本(这是我的理解)),那么我有一个编译错误因为我不能使用依赖项。
请注意,我有spring-boot-starter-parent作为B和C的父级,因为项目B和C将是一个Spring Boot项目。我之所以不将其放在根目录(pom.xml)中,是因为也许我将拥有另一个不是Java项目的模块。
这可能是原因吗? 如果是,那么我应该创建这样的项目结构吗?
A
├───Backend
│ ├── B
│ │ └── pom.xml
│ ├── C
│ │ └── pom.xml
│ │
│ └── pom.xml (spring-boot-starter as parent)
│
├───Frontend (using: eirslett mvn plugin)
│
└──pom.xml
解决方法
问题出在这里:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
在模块 B 和 C 中。请添加模块 A 作为 B 和 C
的父级 ,如果您不使用A作为父POM,则不能使用A的dependencyManagement。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。