POM(Project Object Model)(翻译:项目对象模型)->
Maven工程的基本单元,也是Maven的核心。它是一个XML文件,包含项目的基本信息,用于描述项目如何构建、声明项目依赖等。
在执行任务或目标时,Maven会先在当前目录中查找pom.xml文件,然后获取所需的配置信息,再执行目标
pom的元素
- dependencies
在此元素下添加依赖,它可以包含多个依赖 - dependency
与之间有3个标识
·groupId:定义隶属的实际项目,坐标元素之一
·artifactId:定义项目中的一个模块,坐标元素之一
·version:依赖或项目的版本,坐标元素之一
加上能标识唯一的项目或库
dependency用来声明依赖。如果需要添加依赖,则可以在"“和”"元素之间进行添加。
示例代码:
<dependencies>
<dependency>
<groudId>org.springframework.boot</groudId>
<artifactId>spring-boot-starter-web</artifactId>
<dependency>
<dependencies>
- scope
如果有一个编译时需要而发布时不需要的JAR包,则可以用scope标签标记该包,并将其值设为provided
scoped的标签参数
参数 | 描述 |
---|---|
compile | scope的默认值,表示被依赖项目需要参与当前项目的编译、测试、运行阶段,是一个比较强的依赖。打包时也要包含进去 |
provided | provided表示打包时可以不打包进去,Web Container会提供。该依赖理论上可以参与编译、测试、运行等周期 |
runtime | 表示dependency不作用在编译阶段,但会作用在运行和测试阶段,如JDBC驱动使用运行和测试阶段 |
system | 和provided相似,打在系统中要以外部JAR包的形式提供,Maven不会在reposity中查找它 |
test | 表示dependency作用在测试阶段,不作用在运行阶段。只在测试阶段使用,用于编译和运行测试代码,不随项目发布 |
- properties
如果要使用自定义的变量,则可以在元素中进行变量的定义,然后在其他节点中引用该变量。它的好处是:在依赖配置时引用变量,可以达到统一版本号的目的
<properties>
<java.version>1.8</java.version>
<solr.version>8.0.0</solr.version>
</properties>
要使用上面定义的变量,可以通过表达式"${变量名}"来调用:
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>${solr.version}</version>
</dependency>
-
plugin
在创建SpringBoot项目时,默认提供了spring-boot-maven-plugin插件。它提供打包时需要的信息,将SpringBoot应用打包为可执行的JAR或WAR文件 -
完整的pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmln="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模型版本,模型版本很少改变,但它是必不可少的,这是
为了在Maven引入新特性或其他模型变更时,确保稳定性-->
<modelVersion>4.0.0</modelVersion>
<!--父项目的坐标,如果项目没规定某个元素的值,那么父项目中的对应值即为项目的默认值,坐标包括
group、artifactId和version-->
<parent>
<!--被继承的父项目的唯一标识符-->
<groupId>org.springframework.boot</groupId>
<!--被继承的父项目的构件标识符-->
<artifactId>spring-boot-starter-parent</artifactId>
<!--被继承的父项目的版本号-->
<version>2.1.3.RELEASE</version>
<!--父项目的pom.xml文件的相对路径,相对路径允许一个不同的路径,默认值是../pom.xml
Maven在构建当前项目的地方寻找父项目的POM,然后在文件系统的relativePath位置寻找(如果没
找到,则继续在本地仓库寻找,最后再远程仓库中寻找父项目的POM)-->
<relativePath/>
</parent>
<!--公司或组织的唯一标志(项目的全球唯一标识符),并且配置时生成的路径也是由此生成的,通常使用全限
定的报名区分该项目和其他项目,如com.companyname.project,Maven会将该项目生成的JAR包放在本地路径:
/com/companyname/project-->
<groupId>com.example</groupId>
<!--项目的唯一ID,一个groupId下面可能有多个项目,靠artifactId来区分-->
<artifactId>demo</artifactId>
<!--版本号,格式为主版本.次版本.增量版本-限定版本号-->
<version>0.0.1-SNAPSHOT</version>
<!--项目的名称,用于Maven产生的文档-->
<name>HelloWord</name>
<!--项目的详细描述,用于Maven产生的文档。这个元素能够在用HTML格式时使用(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签)-->
<description>Demo project for Spring Boot</description>
<properties>
<!--项目开发的Java版本号-->
<java.version>1.8</java.version>
</properties>
<!--项目的依赖项,可以通过该元素描述项目相关的所有依赖,它们自动从项目定义的仓库中下载-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-wweb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</group>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test<scope>
</dependency>
</dependencies>
<!--构建项目(打包生成可执行文件)需要的信息-->
<build>
<!--项目使用的插件列表-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>