微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我无法使用Maven在子模块中使用继承的依赖项

如何解决我无法使用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 举报,一经查实,本站将立刻删除。