- dependencyManagement组件用来申明依赖,但不导入;dependencies 组件用于导入依赖
- 子项目不会继承 dependencyManagement 组件中声明的依赖,但如果子项目想导入某个父 pom 中 dependencyManagement 中的依赖,只需要填写 groupId 和 artifactId,不需要填写版本号,maven 会自动去父 pom 的 dependencyManagement 中找对应的 version,包括scope、exclusions 等
文章插图
项目模块目录:
文章插图
模块说明父工程模块:fmmal
子工程模块:common、beans、mapper、service、api
注意:以上所有工程模块,除 api 是创建的 SpringBoot 项目,其他模块都是创建的 maven 项目 。
聚合工程中的子工程,除了接口工程(需要启动运行)需要创建为 SpringBoot 工程外,其他工程一般创建为 maven 工程,为接口工程提供复用服务 。(如 common、beans、mapper、service 等此类工程)依赖配置说明
- 所有子工程都要求有的依赖:在父工程 pom 的
dependencies
公共依赖中添加 - 多个子工程需要相同的依赖:在父工程 pom 的
dependencyManagement
依赖管理中添加,然后在需要依赖的子工程中自行添加(不用指定版本号),让父工程做统一的依赖版本管理 - 子工程单独需要的依赖:则直接在其 pom 中自行添加即可
依赖传递:B 依赖 C,A 又依赖 B,则 A 也依赖 C 。(C 有的,A 也会有)关于聚合工程 install 问题因为是聚合工程,所以一定存在工程之间互相依赖;而被依赖的工程通常是需要打包后才可供给其他工程使用的 。
在开发环境中,虽然我们直接运行启动类也可正常调用相关代码服务,但是我们一般会先将父工程
install
一下,保证所有子工程都可正常打包后,再运行接口启动类运行项目 。基于以上说明,如果父工程
install
出现问题,如提示“程序包xxx不存在,找不到符号”,可参考以下解决办法:原因分析:
项目 build 过程出现问题,个人估计一般这种情况就是依赖问题,pom.xml 中导入有问题,有可能是 springboot 自身的编译插件 spring-boot-maven-plugin 导致的 。
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
解决方案:不要将此插件放到顶级父工程中,在需要打成可执行 jar 的地方添加就好,如果是需要被依赖的,就不要添加此插件!
分析:结合此聚合案例,我们需要将此插件放到 api 接口工程中,它不是顶级工程,它不需要被依赖,它需要打成可执行 jar!
聚合工程各 pom.xml 示例ffmall 父工程的 pom.xml
<?xml version="1.0" encoding="UTF-8"?><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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 看情况添加 --><!--<parent>--><!--<groupId>org.springframework.boot</groupId>--><!--<artifactId>spring-boot-starter-parent</artifactId>--><!--<version>2.6.6</version>--><!--</parent>--><!-- 父工程坐标 --><groupId>com.luis</groupId><artifactId>fmmall</artifactId><version>2.0.1</version><!-- 打包类型为pom,必须!--><packaging>pom</packaging><!-- 子模块 --><modules><module>common</module><module>beans</module><module>mapper</module><module>service</module><module>api</module></modules><!-- 设置相关属性 --><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.3.7.RELEASE</spring-boot.version></properties><!-- 公共依赖 --><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--<dependency>--><!--<groupId>org.springframework.boot</groupId>--><!--<artifactId>spring-boot-starter-test</artifactId>--><!--<scope>test</scope>--><!--<exclusions>--><!--<exclusion>--><!--<groupId>org.junit.vintage</groupId>--><!--<artifactId>junit-vintage-engine</artifactId>--><!--</exclusion>--><!--</exclusions>--><!--</dependency>--></dependencies><!-- 依赖管理,配置对应 jar 包版本--><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><!--不要将此插件放到顶级父工程中,在需要打成可执行jar的地方添加就好了,如果是需要被依赖的,就不要添加此插件--><!--<build>--><!--<plugins>--><!--<plugin>--><!--<groupId>org.apache.maven.plugins</groupId>--><!--<artifactId>maven-compiler-plugin</artifactId>--><!--<version>3.8.1</version>--><!--<configuration>--><!--<source>1.8</source>--><!--<target>1.8</target>--><!--<encoding>UTF-8</encoding>--><!--</configuration>--><!--</plugin>--><!--<plugin>--><!--<groupId>org.springframework.boot</groupId>--><!--<artifactId>spring-boot-maven-plugin</artifactId>--><!--<version>2.3.7.RELEASE</version>--><!--<configuration>--><!--<mainClass>com.luis.fmmall.ApiApplication</mainClass>--><!--</configuration>--><!--<executions>--><!--<execution>--><!--<id>repackage</id>--><!--<goals>--><!--<goal>repackage</goal>--><!--</goals>--><!--</execution>--><!--</executions>--><!--</plugin>--><!--</plugins>--><!--</build>--></project>
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 建筑公司取名字大全集免费 建筑工程公司起名字大全
- 工程造价专业主要学什么 要学哪些课程
- 2023电气工程专业学什么 就业前景怎么样
- 女生学软件工程好就业吗 找什么工作
- springboot项目整合-注册功能模块开发
- 食品科学与工程专业毕业后干什么工作
- 高分子材料与工程专业毕业后干什么工作
- 高分子材料工程技术专业毕业后干什么工作
- 高速铁道工程技术专业毕业后干什么工作
- 女生学软件工程很难吗 发展前景好吗