Maven中pom文件常见的标签使用以及介绍

195 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、pom文件介绍说明

1、下面是我做毕业设计时候的pom文件说明,可能部分说明不全,会在二级标题中,把需要特殊说明的,单独拎出来。

<?xml version="1.0" encoding="UTF-8"?>
<!--project是pom文件的根元素-->
<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">

    <!--描述pom文件遵循从哪个版本的项目描述符-->
    <modelVersion>4.0.0</modelVersion>



    <!--描述项目组织的唯一标识,也就是项目是哪个公司或者组织开发的,通常使用域名或组织名称-->
    <groupId>com.ligong</groupId>
    <!--项目唯一标识,通常使用项目或模块名-->
    <artifactId>have_take_out</artifactId>
    <!--项目版本号-->
    <version>1.0-SNAPSHOT</version>
    <!--项目打包类型,默认值是jar, 还可以是war、zip pom-->
    <packaging>jar</packaging>


    <!--引入起步依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!--引入Jar依赖列表-->
    <dependencies>
        <!--需要引入的maven坐标-->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--如果不设置scope标签,m默认值就是compile
               test 当前依赖仅参与项目的单元测试
               runtime 当前依赖仅参与项目的运行阶段
               provided 与compile 类似,区别在与不会参与项目的最终打包
               system 从本地磁盘中引用一个jar包
            -->
            <!--如果作用于是system,那么嗨需要额外加入一个标签,如下-->
            <scope>compile</scope>
            <systemPath>jar包所在路径</systemPath>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.4.5</version>
            <scope>compile</scope>
        </dependency>

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

       
         
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>

        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.16</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>2.1.0</version>
        </dependency>

        <!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

          <!--主从复制-->
       <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC1</version>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.2</version>
        </dependency>



        <!--用到的HTTP工具包:okhttp 3.13.1,短信服务-->
        <dependency>
         <groupId>com.squareup.okhttp3</groupId>
         <artifactId>okhttp</artifactId>
         <version>3.13.1</version>
         </dependency>


    </dependencies>

   

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

</project>

2、properties标签

在这里插入图片描述

3、licenses配置开源许可证,了解

在这里插入图片描述

4、developers开发者信息

在这里插入图片描述

5、scm项目版本控制工具

在这里插入图片描述

6、bulid表示对项目的一些编译配置

在这里插入图片描述

7、plugins 插件配置

例如编译插件; 在这里插入图片描述

8、parent继承父类模块

在这里插入图片描述

9、modules标识子模块列表

二、依赖Jar包冲突原理,以及解决方案

举个例子,当我们的Web项目需要分别引入A架包与B架包;

但是A架包 和B架包 因为依赖的传递性,分别 引入了 C架包的 1.0版本和C架包的2.0版本,但是类加载器在执行的过程中只加载了1.0版本的架包,但是我们在编程或者写代码的时候,却调用了C架包中2.0版本中的多出的方法或者类,那么这个时候就可能会出现找不到方法或者,没有发现类的情况。 在这里插入图片描述

在这里插入图片描述