SpringBoot construye un proyecto de agregación


1. Frente

1. Presento el método de construcción del proyecto de agregación y un poco de mi comprensión personal
2. He probado el código
3. Uso IDEA
4. Primero presentaré la creación del proyecto y finalmente el archivo pom

2. Crea el proyecto principal

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Finalmente, la estructura del proyecto principal:
Inserte la descripción de la imagen aquí
no es necesario seleccionar un paquete, simplemente termine a continuación.

3. Crea un subproyecto

Inserte la descripción de la imagen aquí
Para crear este subproyecto, simplemente seleccione el paquete correspondiente de acuerdo con sus propias necesidades y créelo. Simplemente créelo como creamos un proyecto springboot normal. No diré más sobre esto.

4. Estructura del proyecto

Este lugar es solo una demostración, quité la prueba y otras cosas, no la guardé, es una demo muy simple
Inserte la descripción de la imagen aquí

5. Presentación del archivo POM

Proyecto principal 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>

Subproyecto 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>

Subproyecto pom.xml común:

<?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>

Controlador de subproyecto 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. Comprensión personal de los proyectos de agregación.

Inserte la descripción de la imagen aquí
Si es un poco más complicado, esto también es posible.
Inserte la descripción de la imagen aquí

7, charla miscelánea

  1. Creo que la construcción de un proyecto cohesivo se verá muy afectada por la experiencia laboral personal, porque cuando se trata de dependencias, es necesario tener una comprensión clara del proyecto en general. Si se completa la estructura del proyecto, la mayor parte del código se ha escrito. esta vez, creo que modificar la relación entre dependencias será un poco problemático. Siento que debes considerarlo antes de construir, o dejar suficiente espacio para modificaciones. Debido a que mi propio proyecto está hecho con agregación, ahora siento que la relación entre dependencias es algo No muy bonito, muy desordenado, pero será muy problemático si se modifica, ahora voy a morder la bala y seguir haciéndolo

  2. Configure un proyecto de polimerización, se siente que la dificultad es promedio, simplemente hágalo como un solo proyecto ordinario, y no hay nada de malo en manejar las dependencias.

  3. Solo algunos de los problemas que encontré personalmente en el proyecto de agregación.

    这个最好放在启动的工程下面,当然放在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. Publicaré la clase de inicio:

    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. Al igual que los enlaces de bases de datos, los enlaces de Redis, son exactamente iguales a los habituales, no hay diferencia

  6. El siguiente artículo escribirá la implementación de Docker empaquetada, portal: https://blog.csdn.net/qq_38637558/article/details/105154483

Supongo que te gusta

Origin blog.csdn.net/qq_38637558/article/details/105167120
Recomendado
Clasificación