Loading

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运行一下如图

posted @ 2021-11-02 13:33  BigBender  阅读(722)  评论(0编辑  收藏  举报