【发布时间】:2019-05-08 19:03:13
【问题描述】:
我正在玩 maven 多模块 spring boot (v2.1) 项目,并认为我会非常聪明并将模块嵌套在其他模块中。这个项目的目的是运行不同的报告,在数据部分,我想按类型拆分报告以便于管理,同时共享一些功能 wike writers 和基类,因为它们将在每个报告中使用
下面是层次结构的屏幕截图,但基本上,我有一个父 pom 使用(跳过依赖和构建部分):
<packaging>pom</packaging>
<modules>
<module>adhoc-web</module>
<module>adhoc-data</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
父 pom 的子项目是一个 web 项目和一个数据项目。数据 pom 看起来像(跳过依赖和构建部分):
<parent>
<artifactId>ad-hoc-parent</artifactId>
<groupId>com.recondo.reporting</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>adhoc-data</artifactId>
<packaging>pom</packaging>
<modules>
<module>adhoc-data-base-models</module>
</modules>
<properties>
<java.version>1.8</java.version>
<spring.boot.repackage.skip>true</spring.boot.repackage.skip>
</properties>
<dependencies>
<dependency>
<groupId>com.recondo.reporting</groupId>
<artifactId>adhoc-data-base-models</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
<spring.boot.repackage.skip>true</spring.boot.repackage.skip>
</properties>
在数据模块下我想做的是创建子模块来组织代码。这是我创建的一个模块示例,用于存储每个报告可以扩展的基本模型:
<parent>
<artifactId>adhoc-data</artifactId>
<groupId>com.recondo.reporting</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>adhoc-data-base-models</artifactId>
<properties>
<java.version>1.8</java.version>
<spring.boot.repackage.skip>true</spring.boot.repackage.skip>
</properties>
当我尝试构建这个项目时,我收到一个错误,即 adhoc-data-base-model 和 adhoc-data 之间存在周期性依赖关系
reactor 中的项目包含一个循环引用:'Vertex{label='com.recondo.reporting:adhoc-data:0.0.1-SNAPSHOT'}' 和 'Vertex{label='com.recondo 之间的边。报告:adhoc-data-base-models:0.0.1-SNAPSHOT'}' 在图中引入循环 com.recondo.reporting:adhoc-data-base-models:0.0.1-SNAPSHOT --> com.recondo。报告:adhoc-data:0.0.1-SNAPSHOT --> com.recondo.reporting:adhoc-data-base-models:0.0.1-SNAPSHOT -> [帮助 1]
我在possible solution 中读到的内容是有道理的,但是当我按照链接建议删除了 adhoc-data pom 中的依赖项时,我收到了这个错误:
[错误] 无法在项目 ad-hoc-web 上执行目标:无法解析项目 com.recondo.reporting:ad-hoc-web:jar:0.0.1-SNAPSHOT 的依赖项:找不到工件 com。 recondo.reporting:adhoc-data:jar:0.0.1-SNAPSHOT -> [帮助 1] 这可能是有道理的……我将数据模块打包为 pom,因为这就是父模块与子模块打包的方式……
我应该如何解决这个问题/构建多模块 maven 项目来处理多个级别的依赖关系?
【问题讨论】:
标签: java maven spring-boot multi-module