本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、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版本中的多出的方法或者类,那么这个时候就可能会出现找不到方法或者,没有发现类的情况。