pom:
POM是项目对象模型(Project Object Model)的简称
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;
而pom.xml主要描述了项目的maven坐标,该文件用于管理:源代码、配置文件、开发者的信
息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。是项目级别的配置文件。
<?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">
//pom版本标签
//必须标签,表示是一个固定的版本,指定了当前pom的版本
<modelVersion>4.0.0</modelVersion>
//坐标信息标签 <基础设置>
//公司或者组织的唯一标志,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成,
如x.xx.xxx生成的相对路径为:/x/xx/xxx/
<groupId>x.xx.xxx</groupId>
//本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的;
<artifactId>项目名</artifactId>
//打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar;
<packaging>pom</packaging>
//项目当前的版本号
<version>1.0.0</version>
//
<inceptionYear>2018-Now</inceptionYear>
//另起一个项目名展示给用户
<name>maven</name>
//项目主页的URL, Maven产生的文档用
<url>http://www.baidu.com/banseon</url>
//项目的详细描述, Maven 产生的文档用。
<description>A maven project to study maven.</description>
//父项目标签
<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>
//为pom定义一些常量,在pom中的其它地方可以直接引用
<properties>
//java版本
<java.version>1.8</java.version>
<maven.test.skip>true</maven.test.skip>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
<eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>
<main.basedir>${basedir}</main.basedir>
<spring-cloud-dependencies.version>Finchley.RELEASE</spring-cloud-dependencies.version>
//自定义标签 引用时使用${gjyf-dependencies.version}
<gjyf-dependencies.version>2.0.0-SNAPSHOT</gjyf-dependencies.version>
</properties>
//定义本项目的依赖关系
//继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,它并不会被运行,就是不会营造实际的依赖,
主要用于父模块中定义供子模块使用,而当子项目声明一个依赖(必须描述group ID和artifact ID信息),
如果group ID和artifact ID以外的一些信息没有描述,则通过
group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息。
<dependencyManagement>
<dependencies>
//参见dependencies/dependency元素
<dependency>
eg:
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
//标签内为test时表示该项依赖(这个jar)只能在test时起到作用,打包编译发布后不起作用
//scope属性值:
//compile:默认的范围,在编译测试,运行都有效,在依赖项dependency中不写,也就是不指定scope标签,即表示默认;
//provided:在编译和测试的时候有效
//runtime:在测试和运行时有效
//test:只在测试范围内有效
//system:在编译和测试是有效,与本机系统相关联,可移植性差
//improt:导入的依赖范围,它只使用在dependencyManagement中,表示从其它的pom中导入dependency的配置。
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
//构建配置
<build>
//项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里.
<resources>
<resource>
//描述存放资源的目录,该路径相对POM路径
<directory>src/main/resources</directory>
</resource>
<resource>
//描述存放资源的目录,该路径相对POM路径
<directory>src/main/java</directory>
//包含的模式列表
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resources/>
//使用的插件列表.
<plugins>
//描述插件所需要的信息。
<plugin>
//插件在仓库里的group ID
<groupId> </groupId>
//插件在仓库里的artifact ID
<artifactId> </artifactId>
//被使用的插件的版本(或版本范围)
<version> </version>
<plugin/>
<plugins>
<build/>
//模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
<modules>
<!--子项目相对路径-->
<module></module>
</modules>