SpringBoot 拆分多模块
root 模块(父)
首先新建一个工程
点击Next
继续下一步,勾选好常用的依赖,进入工程,删除不需要的文件夹:src、main、test
pom 文件中把 <package> 标签内容改为 pom
子模块
点击工程结构按钮,新建 module
点击新建
和创建root一样一路点下去,自己取名字
子模块样例
注意 parent 标签,artifactId、version是父模块的 artifactId、version
<?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"> <parent> <artifactId>poison</artifactId> <groupId>cn.techny</groupId> <version>1.0.0</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>poison-common</artifactId> <description>常用工具</description> </project>
然后父模块的pom文件中要配置一下 modules 标签
我这边有三个,poison-common,poison-admin、poison-app,都配置在 module 标签中
依赖管理
dependencyManagement 标签
<dependencyManagement> <dependencies> <!-- SpringBoot的依赖配置--> <dependency> </dependency> </dependencies> </dependencyManagement>
这个标签是声明依赖,如果子模块如果需要引用,直接引用 groupId 和 artifactId,不需要带版本号,会自动继承父类
如果带上了版本号标签,那么会重新下载并引用,不会继承父类引用
譬如
<dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
SpringBoot 依赖配置
<!-- SpringBoot的依赖配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.5.4</version> <type>pom</type> <scope>import</scop> </dependency>
这个可以统一管理 spring-starter 的版本号,注意这里的版本号和 parent 标签的版本号是一样的
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePath/> <!-- lookup parent from repository --> </parent>
打包
<build> <plugins> <plugin> <!-- The plugin rewrites your manifest --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.3.0.RELEASE</version> <configuration><!-- 指定该Main Class为全局的唯一入口 --> <mainClass>cn.techny.app.AppApplication</mainClass> <layout>ZIP</layout> </configuration> <executions> <execution> <goals> <goal>repackage</goal><!--可以把依赖的包都打包到生成的Jar包中--> </goals> <!--可以生成不含依赖包的不可执行Jar包--> <!-- configuration> <classifier>exec</classifier> </configuration> --> </execution> </executions> </plugin> </plugins> </build>
这里的 repackage,可以把依赖的包都打包到生成的jar包中
用idea运行一下如图
论读书
睁开眼,书在面前 闭上眼,书在心里
睁开眼,书在面前 闭上眼,书在心里