SpringBoot搭建聚合项目


1、前置

1、介绍聚合项目的搭建方式,以及一点我个人的理解
2、代码我都有过测试
3、我使用的是IDEA
4、会先介绍创建工程,最后会介绍pom文件

2、创建父工程

在这里插入图片描述
在这里插入图片描述
最后父工程结构:
在这里插入图片描述
不用选择包,直接next完。

3、创建子工程

在这里插入图片描述
创建的这个子工程,就按照你自己的需要选择对应的包,进行创建就行,就和我们创建springboot普通项目一样创建就行,这个地方我就不多说了

4、项目结构

这个地方我只是演示,像test这些我就去除了,没有留着,是一个很简单的demo
在这里插入图片描述

5、介绍POM文件

父工程 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- Maven模型的版本号 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- Spring Boot的父级依赖 参考:https://segmentfault.com/a/1190000018854658 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <!-- 设定一个空值将始终从仓库中获取,不从本地路径获取 -->
        <relativePath/>
    </parent>
    <!-- 组织名 -->
    <groupId>com.test</groupId>
    <!-- 项目名称 -->
    <artifactId>test-demo</artifactId>
    <!-- 版本号 -->
    <version>0.0.1-SNAPSHOT</version>
    <!-- 项目名称 -->
    <name>test-demo</name>
    <description>Demo project for Spring Boot</description>
    <!-- 指定父工程打包方式:pom-->
    <packaging>pom</packaging>

    <!-- 指定版本 -->
    <!-- 对应的包可以通过这种方式获取版本,便于版本的统一管理 <version>${java.version}</version> -->
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <!-- 指定子项目模块 -->
    <modules>
        <module>base</module>
        <module>common</module>
        <module>controller</module>
    </modules>

    <dependencies>
        <!-- lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- jackson序列化 -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
    </dependencies>

    <!-- 环境切换配置. 如果有几百个子工程,每个工程所需的环境都不一样,就需要单独进行配置. 右边Maven Profiles进行选择当前的环境 -->
    <profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
            <!-- 默认本地环境-->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 线上运行环境 -->
            <id>prod</id>
            <properties>
                <profiles.active>prod</profiles.active>
            </properties>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>
    </profiles>

</project>

子工程base 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 指定我们的父工程, test-demo -->
    <!-- 这个地方是没有<relativePath/>它的 -->
    <parent>
        <groupId>com.test</groupId>
        <artifactId>test-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.test</groupId>
    <artifactId>base</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>base</name>
    <description>项目入口,核心包</description>
    <!-- 指定子项目打包方式为JAR -->
    <packaging>jar</packaging>

    <dependencies>
        <!-- 该模块依赖 controller 模块 -->
        <dependency>
            <groupId>com.test</groupId>
            <artifactId>controller</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- 该模块依赖 common 模块 -->
        <dependency>
            <groupId>com.test</groupId>
            <artifactId>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>
	    <!-- 生成jar包的名称 -->
	    <finalName>testDemo</finalName>
	</build>
</project>

子工程common 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.test</groupId>
        <artifactId>test-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.test</groupId>
    <artifactId>common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>common</name>
    <description>Demo project for Spring Boot</description>
    <packaging>jar</packaging>


    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

子工程controller 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.test</groupId>
        <artifactId>test-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.test</groupId>
    <artifactId>controller</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>controller</name>
    <description>Demo project for Spring Boot</description>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.test</groupId>
            <artifactId>common</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

6、个人对聚合项目的理解

在这里插入图片描述
复杂一点的话,这样也是可以的
在这里插入图片描述

7、杂谈

  1. 自我感觉搭建聚合项目, 会很受个人工作经验的影响, 因为处理依赖关系的时候, 需要对整体项目有很清晰的认知, 如果项目结构搭建完成, 代码还写了一大半了, 这个时候想修改依赖之间的关系的话就会有些麻烦了, 感觉在搭建之前就需要考虑好, 要不留足可修改的空间. 因为我自己项目是用聚合做的, 现在就感觉依赖之间的关系有些不太美好, 很杂乱, 但是修改起来的话又会很麻烦, 现在就硬着头皮接着做在

  2. 搭建聚合项目, 感觉难度一般吧, 就像做普通的单体项目一样来做就好啦, 处理好依赖关系就没啥毛病了

  3. 就我个人在聚合项目中碰到的一些问题.

    这个最好放在启动的工程下面,当然放在common里面也行:
    <build>
    	<plugins>
    	   <plugin>
    	       <groupId>org.springframework.boot</groupId>
    	       <artifactId>spring-boot-maven-plugin</artifactId>
    	   </plugin>
    	</plugins>
        <!-- 生成jar包的名称 -->
        <finalName>testDemo</finalName>
    </build>
    
    2: 子项目没有 <relativePath/>
    
    3: 依赖关系处理好,就是继承关系处理好,包与包之间的引用关系
    
    4: 比如像这个包,就可以把它放到最基本的子工程里面.上面贴的两个图,我就放在common里面在,这样整个项目都可以引用到.你问我为什么不放在父工程,我没有试过,不知道
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    
  4. 我贴一下启动类:

    package com.test.base;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ComponentScan;
    
    @SpringBootApplication
    // 告诉Spring从哪里找到bean, 定义哪些包需要被扫描
    @ComponentScan(basePackages = {
          
          "com.test"})
    public class BaseApplication {
          
          
    
        public static void main(String[] args) {
          
          
            SpringApplication.run(BaseApplication.class, args);
        }
    
    }
    
    
  5. 像数据库的链接啊,Redis的链接啊,和平常的一模一样,没有区别

  6. 下一篇会写打包docker方式部署, 传送门: https://blog.csdn.net/qq_38637558/article/details/105154483

猜你喜欢

转载自blog.csdn.net/qq_38637558/article/details/105167120
今日推荐