整理Maven坐标,Spring Boot集成工具依赖版本差异问题

Maven

Maven项目结构

❀src/main/java

这个目录下储存java源代码

❀src/main/resources

储存主要的资源文件。比如xml配置文件和properties文件

❀src/test/java

储存测试用的类,比如JUNIT的测试一般就放在这个目录下面

因为测试类本身实际是不属于项目的,所以放在任何一个包下都显得很尴尬,所以maven专门创建了一个测试包

用于存放测试的类

❀src/test/resources

可以自己创建你,储存测试环境用的资源文件

❀src

包含了项目所有的源代码和资源文件,以及其他项目相关的文件。

❀target

编译后内容放置的文件夹

❀pom.xml

是Maven的基础配置文件。配置项目和项目之间关系,包括配置依赖关系等等

POM模式

Maven工具基于POM(Project Object Model,项目对象模型)模式实现的。在Maven中每个项目都相当于是一个对象,对象(项目)和对象(项目)之间是有关系的。关系包含了:依赖、继承、聚合,实现Maven项目可以更加方便的实现导jar包、拆分项目等效果。

依赖

A依赖B,B依赖C,实际:A依赖C

Maven - 依赖三大原则_maven最短路径原则-CSDN博客

  • 最短路径优先原则

  • 最先声明原则

继承

在父项目中放在中的内容时不被子项目继承,不可以直接使用

放在中的内容主要目的是进行版本管理。里面的内容在子项目中依赖时坐标只需要填写和即可。

聚合

父项目类型为pom类型。同时在父项目的pom.xml中出现表示包含的所有子模块。

聚合项目

这块用目前踩坑极限总结的最好用的项目坐标来阐述

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

    <groupId>com.qf</groupId>
    <artifactId>Blog</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.6</version>
    </parent>

    <!-- 统一版本管理 -->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <!-- 依赖包版本 -->
        <lombok.version>1.18.28</lombok.version>
        <guava.version>31.1-jre</guava.version>
        <commons-lang3.version>3.12.0</commons-lang3.version>
        <jackson.version>2.15.2</jackson.version>
        <knife4j.version>4.3.0</knife4j.version>
        <mysql.version>8.0.33</mysql.version>
        <mybatis-plus.version>3.5.2</mybatis-plus.version>
        <p6spy.version>3.9.1</p6spy.version>
        <jjwt.version>0.11.5</jjwt.version>
        <minio.version>8.2.1</minio.version>
        <mapstruct.version>1.5.5.Final</mapstruct.version>
        <commonmark.version>0.20.0</commonmark.version>
    </properties>

    <!-- 统一依赖管理 -->
    <dependencyManagement>
        <dependencies>
            <!-- 常用工具库 -->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>
            <!-- Jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <!-- knife4j(API 文档工具) -->
            <dependency>
                <groupId>com.github.xiaoymin</groupId>
                <artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
                <version>${knife4j.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <!-- Mybatis Plus -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.version}</version>
            </dependency>

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>

            <dependency>
                <groupId>p6spy</groupId>
                <artifactId>p6spy</artifactId>
                <version>${p6spy.version}</version>
            </dependency>

            <!--   JWT   -->
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-api</artifactId>
                <version>${jjwt.version}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-impl</artifactId>
                <version>${jjwt.version}</version>
            </dependency>
            <dependency>
                <groupId>io.jsonwebtoken</groupId>
                <artifactId>jjwt-jackson</artifactId>
                <version>${jjwt.version}</version>
            </dependency>

            <!-- 对象存储 Minio -->
            <dependency>
                <groupId>io.minio</groupId>
                <artifactId>minio</artifactId>
                <version>${minio.version}</version>
            </dependency>

            <!-- Mapstruct 属性映射 -->
            <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct</artifactId>
                <version>${mapstruct.version}</version>
            </dependency>
            <!-- Markdown 解析 -->
            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-tables</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-heading-anchor</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-image-attributes</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>org.commonmark</groupId>
                <artifactId>commonmark-ext-task-list-items</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

        </dependencies>
    </dependencyManagement>
    <build>
        <!-- 统一插件管理 -->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.13.0</version>
                    <configuration>
                        <source>8</source>
                        <target>8</target>
                        <annotationProcessorPaths>
                            <path>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                                <version>${lombok.version}</version>
                            </path>
                            <path>
                                <groupId>org.mapstruct</groupId>
                                <artifactId>mapstruct-processor</artifactId>
                                <version>1.5.5.Final</version>
                            </path>
                        </annotationProcessorPaths>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
相关推荐
木子020418 分钟前
SpringBoot线程问题
java·开发语言
TANGLONG22231 分钟前
【C语言】字符和字符串函数(2)
java·c语言·c++·python·考研·面试·蓝桥杯
2402_857583491 小时前
新闻推荐系统:Spring Boot的架构优势
数据库·spring boot·架构
2401_854391081 小时前
新闻推荐系统:Spring Boot与大数据
java·spring boot·后端
全职计算机毕业设计2 小时前
基于协同过滤的网络文学智能推荐平台的设计与实现(小说)springboot mysql Redis Thymeleaf
spring boot·后端·mysql
编程、小哥哥2 小时前
手写mybatis之Mapper XML的解析和注册使用
xml·java·mybatis
原机小子2 小时前
大学生就业桥梁:基于Spring Boot的招聘系统
服务器·数据库·spring boot
哈哈皮皮虾的皮2 小时前
源码中为什么大多都使用for去作为死循环,而不是用while呢?
java
daxian_am4612 小时前
k8s image error
java·数据库·kubernetes