使用IDEA新建一个maven管理springboot的项目(因为使用的社区版,所以下载了alibaba的插件辅助创建~)
注意修改packge,用插件的话底下的packge是不会变的一直都是(被坑了)
顶级父项目创建成功!顶层项目,它不用操心具体的业务逻辑,只用完成一个任务:管理子模块和定义 Maven 依赖项的版本。现在删除所有文件除了pom文件,并对pom文件进行配置
<?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.4.1</version>
</parent>
<groupId>com.geekbang</groupId>
<artifactId>coupon</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>16.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
在 pom 文件里有以下三个重点标签。
< parent > 标签
在 parent 标签中我们指定了项目的“父级依赖”为 spring-boot-starter-parent,这样一来,spring-boot-starter-parent 里定义的 Spring Boot 组件版本信息就会被自动带到子模块中。这种做法也是大多数 Spring Boot 项目的通用做法,不仅降低了依赖项管理的成本,也不需要担心各个组件间的兼容性问题。
< packaging > 标签
maven 的打包类型有三种:jar、war 和 pom。当我们指定 packaging 类型为 pom 时,意味着当前模块是一个“boss”,它只用关注顶层战略,即定义依赖项版本和整合子模块,不包含具体的业务实现。
< dependencymanagement > 标签
这个标签的作用和 < parent > 标签类似,两者都是将版本信息向下传递。dependencymanagement 是 boss 们定义顶层战略的地方,我们可以在这里定义各个依赖项的版本,当子项目需要引入这些依赖项的时候,只用指定 groupId 和 artifactId 即可,不用管 version 里该写哪个版本。完成了 geekbang-coupon 依赖项的编写,接下来我们看看 coupon-template-serv 依赖项的编写。
创建父项目下的子项目,点击file->new->module
按照创建父项目一样,包名记得修改不要有相同的!
创建完成后如果pom文件不是蓝色的是橘色可以右键点击pom文件,然后选择add as a maven project就可以了,完成后的项目结构如图:
现在需要配置顶级项目pom文件和子项目pom文件
顶级项目pom文件需要添加子项目
<modules>
<module>coupon-api</module>
</modules>
子项目pom文件需要添加< parent > 标签
<parent>
<artifactId>coupon</artifactId>
<groupId>com.geekbang</groupId>
<version>1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
再创建一个子项目,同上,如果想在第二个子项目调用第一个子项目的服务,可以在第二个子项目的pom文件里的<dependencies> 标签 添加依赖
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>coupon-api</artifactId>
<version>${project.version}</version>
</dependency>
简单的demo完成!!!!!!!!!