本文档为本人学习交流所用,参考原文档:https://www.cnblogs.com/hoyong/articles/13034270.html
1.pom.xml是什么?
pom是Project Object Model(项目对象模型)的缩写,是Maven中的项目文件,可用于管理与配置依赖,组织信息,项目授权,远程仓库等等.一个Maven项目,可以没有任何代码,但不能没有pom.xml。
2.基本配置标签
(1) project
project是pom.xml的根元素,包含了一些约束信息。
<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">
</project>
(2)modelVersion
pom的版本,这是Maven 2&3唯一支持的pom版本,而且不能忽略。
<modelVersion>4.0.0</modelVersion>
(3)Maven坐标
3.1 groupId
<groupId>表示项目所属的组,通常是一个公司或者组织的名称 <groupId>com.sunshinelife</groupId>
3.2 artifactId
<artifactId>表示项目的唯一标识. < artifactId>项目名</artifactId>
3.3 version
<version>表示项目的版本号,通常来说项目的版本号分成三段:
主版本号.次版本号.修订版本号
主版本号:代表架构变动或者不兼容的实现.
次版本号:兼容性修改,功能增强.
修订版本号:bug修复.
版本号的后缀意味着项目的不同阶段:
SNAPSHOT:开发中的版本
RELEASE:正式发布版
M1,M2:M指里程碑,表示即将发布
RC:Release Candidate,发布候选
GA:General Availablity,基本可用版本
(4)properties
配置各种jar包的版本列表
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!-- cloud升级修改-->
<spring-boot.version>2.7.3</spring-boot.version>
<spring-cloud.version>2021.0.3</spring-cloud.version>
<alibaba-cloud.version>2.2.6.RELEASE</alibaba-cloud.version>
<mybatis.version>2.2.0</mybatis.version>
<pagehelper.version>1.2.3</pagehelper.version>
<springsession.version>1.2.0.RELEASE</springsession.version>
<ali-druid.version>1.1.10</ali-druid.version>
<spring-boot.mvnfplugin.version>2.7.3</spring-boot.mvnfplugin.version>
<commons-lang3.version>3.12.0</commons-lang3.version>
<simplecaptcha.version>1.2.2</simplecaptcha.version>
<commons-text.version>1.10.0</commons-text.version>
<nacos-clint>1.4.1</nacos-clint>
<!--cloud-util使用版本号-->
<axis.version>1.4</axis.version>
<commins-io.version>2.11.0</commins-io.version>
<axis2.version>1.7.8</axis2.version>
<xstrem.version>1.4.18</xstrem.version>
<polx.version>5.2.2</polx.version>
<fastjson.version>1.2.83</fastjson.version>
<javacsv.version>2.0</javacsv.version>
<tomcat.version>9.0.48</tomcat.version>
<alibabaDruid.version>1.2.1</alibabaDruid.version>
<commons-net.version>3.6</commons-net.version>
<staxon-version>1.3</staxon-version>
<dom4j-version>1.6.1</dom4j-version>
<bes-version>9.5.2.008</bes-version>
<springloaded-version>1.2.6.RELEASE</springloaded-version>
<log4j-version>2.17.1</log4j-version>
<!--cch低版本kafka-->
<kafka_2.11-version>0.8.2.0</kafka_2.11-version>
<!-- PDF转图片依赖包 -->
<pdf-verison>2.0.12</pdf-verison>
<!--oceanBase数据库依赖-->
<oceanBaseClient-version>1.1.7</oceanBaseClient-version>
<!--mongodb数据库依赖-->
<springDataMongodb-version>3.3.5</springDataMongodb-version>
<log4j-log4j-version>1.2.17-cloudera1</log4j-log4j-version>
<hutool-verison>5.8.4</hutool-verison>
</properties>
(5)packaging
打包类型,没有提供的话默认值为jar,而咱们的父级项目packaging都是pom。
<!-- 父工程的packaging 是 pom -->
<packaging>pom</packaging>
(6)依赖
Maven下载与在编译时链接依赖与其他所需要的目标,而且可以处理传递性依赖,使列表可以专注于项目所需的依赖.
依赖放在<dependencies>里面,包含若干个<dependency>。
6.1 groupId 与 artifactId 对应项目坐标
6.2 version 版本
6.3 classifier
可用于配置不同jdk的,比如让一个同时支持jdk8与jdk11,可以选择使用哪一个,方便在不同jdk中使用.
6.4 type
对应的依赖类型,默认为jar,通常对应与packaging
6.5 scope
scope表示类库与项目的关系
6.6 exclusions
排除不需要的依赖
包含子元素exclusion,每个exclusion都包含groupId与artifactId。
(7)modules 聚合(或多模块)
模块是pom列出的项目,并作为一个组执行,每个模块通过pom文件或项目的相对路径进行列出.
(8)profiles
<profiles>,包含一组<profile>,每个<profile>可以定义不同的配置,包含的元素有:
<id>:配置文件的id,比如测试的可以叫test.
<build>:相关构建信息.
<modules>:模块信息.
<repositories>:远程仓库信息.
<pluginRepositories>:插件仓库信息.
<dependencies>:依赖信息.
<reporting>:报表信息.
<dependencyManagement>:依赖管理信息.
<distributeManagement>:分发管理
<activation>:activation是profile的关键,profile的强大之处是某些情况下才可以修改基本pom,这些情况通过activation指定.
3.自动生成pom.xml
我们创建一个maven项目时,idea会自动给我们生成一个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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>demo_20230427</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
</project>