手把手从0开始SpringBoot多模块项目搭建

2023-12-26 13:34:18

最近起个小项目,用多模块搭建一下,顺便记录分享

1.创建父工程

通过Spring Lnitalizer创建,
我这里使用的是 springboot 2.7.3 + jdk11
在这里插入图片描述在这里插入图片描述
创建好后删除刚创建工程里不需要的文件, 只保留:.idea 文件夹 、项目 pom 文件、以及一个 *.iml 文件
在这里插入图片描述

在这里插入图片描述

2.创建子模块

在这里插入图片描述
我们创建 archives_common,archives_web,archives_biz,archives_manage 4个模块
在这里插入图片描述

在这里插入图片描述
删除多余目录和文件,每一个模块只保留src下的java路径,pom.xml文件,即可,如下图
在这里插入图片描述
对于 src 里的内容,只保留 archives_web 的启动类和配置文件,其他子模块的的启动类和配置文件都删除
在这里插入图片描述

编辑父工程的pom.xml文件

将父工程 pom.xml 文件修改成如下内容,里面声明该父工程包含的子模块,同时抽取统一的配置信息和依赖版本控制,这样可以方便子 pom 直接引用,简化子 pom 的配置

1、多模块项目中,父模块打包类型必须是 pom。
2、因为开发框架是 spring boot,父模块默认继承 spring-boot-starter-parent,因此可以删除 spring-boot-starter 和 spring-boot-starter-test 依赖

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.tt</groupId>
    <artifactId>archives</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>archives</name>
    <description>Demo project for Spring Boot</description>
    <!-- 父模块打包类型必须为pom -->
    <packaging>pom</packaging>

    <!-- parent指明继承关系,给出被继承的父项目的具体信息-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <java.version>11</java.version>
    </properties>

    <!-- 模块说明:这里声明多个子模块 -->
    <modules>
        <module>archives_biz</module>
        <module>archives_manage</module>
        <module>archives_common</module>
        <module>archives_web</module>
    </modules>
   <!-- 版本说明:这里统一管理依赖的版本号 -->
  <dependencyManagement>
    <dependencies>
        <!--spring-boot-starter-parent中有 可以删除-->
        <!--<dependency>-->
            <!--<groupId>org.springframework.boot</groupId>-->
            <!--<artifactId>spring-boot-starter</artifactId>-->
        <!--</dependency>-->

        <!--<dependency>-->
            <!--<groupId>org.springframework.boot</groupId>-->
            <!--<artifactId>spring-boot-starter-test</artifactId>-->
            <!--<scope>test</scope>-->
        <!--</dependency>-->
        <dependency>
            <groupId>com.tt</groupId>
            <artifactId>archives_web</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.tt</groupId>
            <artifactId>archives_biz</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.tt</groupId>
            <artifactId>archives_common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.tt</groupId>
            <artifactId>archives_manage</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

    </dependencies>
  <dependencyManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

编辑子模块pom.xml

子模块的配置信息会继承父模块的

archives_common的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 继承本项目的父工程 -->
    <parent>
        <groupId>com.tt</groupId>
        <artifactId>archives</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.tt</groupId>
    <artifactId>archives_common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>archives_common</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <!--<dependency>-->
            <!--<groupId>org.springframework.boot</groupId>-->
            <!--<artifactId>spring-boot-starter</artifactId>-->
        <!--</dependency>-->

        <!--<dependency>-->
            <!--<groupId>org.springframework.boot</groupId>-->
            <!--<artifactId>spring-boot-starter-test</artifactId>-->
            <!--<scope>test</scope>-->
        <!--</dependency>-->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

archives_manage archives_biz 子模块需要引入 archives_common 子模块 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 继承本项目的父工程 -->
    <parent>
        <groupId>com.tt</groupId>
        <artifactId>archives</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.tt</groupId>
    <artifactId>archives_biz</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>archives_biz</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.tt</groupId>
            <artifactId>archives_common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

archives_web为启动模块 需要添加 spring-boot-starter-web 依赖

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.tt</groupId>
        <artifactId>archives</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.tt</groupId>
    <artifactId>archives_web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>archives_web</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

移动项目启动类所在包

指定 SpringBootApplication的 scanBasePackages 或者 将启动类往外提一层,确保组件会被扫描到
目前项目启动类 ArchivesWebApplication在 com.tt.archives_web 包下面,我们需要将其移动移动到 com.tt 包下
在这里插入图片描述
在这里插入图片描述
启动启动类
在这里插入图片描述

至此,多模块工程创建完毕。

文章来源:https://blog.csdn.net/csdn570566705/article/details/135214832
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。