【发布时间】:2020-12-19 16:33:47
【问题描述】:
我的项目结构如下:
我想在模块 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
如果我没有将依赖项(我正在使用dependencyManagement,所以它应该放置但我不需要指定版本(这是我的理解))放入我的子 pom.xml 中,那么我有一个编译错误因为我不能使用我的依赖。
请注意,我将 spring-boot-starter-parent 作为 B 和 C 的父级,因为项目 B 和 C 将是 Spring boot 项目。我不把它放在根目录(A 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
【问题讨论】:
-
我也阅读了这些,但找不到我的问题的正确答案:stackoverflow.com/questions/55954293/…stackoverflow.com/questions/29712865/…