最近使用SpringBoot,Maven也使用的越来越多,有这个时间刚好研究了下pom.xml文件的东西,真的是又多又杂。综合各位大神的解读,做了一些整理,剔除了一些不常用的,在需要的时候再去设置,尽量去繁就简,配置简单化。
模板引入
<?xml version="1.0" encoding="UTF-8"?>
<!-- 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">
<!-- 模板版本 -->
<modelVersion>4.0.0</modelVersion>
...
...
...
</project>
项目信息
<!-- 组织标识 -->
<groupId>anddd7.boot4ssh</groupId>
<!-- 项目名称 -->
<artifactId>SSM-SpringBoot-Starter</artifactId>
<!-- 版本号 -->
<version>1.0-SNAPSHOT</version>
<!-- 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par -->
<packaging>pom</packaging>
<!--项目的名称, Maven产生的文档用-->
<name>SSM-SpringBoot-Starter</name>
<!--项目主页的URL, Maven产生的文档用-->
<url>http://www.baidu.com/banseon</url>
<!--项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签), 不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。-->
<description>A maven project to study maven.</description>
多模块关系
<!-- 继承关系 ,继承父pom的所有设置-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>RELEASE</version>
<!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。-->
<relativePath/>
</parent>
<!-- 聚合关系,描述子项目用于关联项目-->
<modules>
<module>mybatis-springboot-sample</module>
<module>demo-springboot-sample</module>
</modules>
依赖关联
<!-- 依赖描述-->
<dependencies>
<dependency>
<!-- 基本信息,表示取用某一版本的jar-->
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>1.4.4.RELEASE</version>
<!--作用域,compile(default),provided,runtime,test,system-->
<scope>compile</scope>
<!--依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。如果设置extensions为 true,就可以在plugin里定义新的类型。所以前面的类型的例子不完整。-->
<type>jar</type>
<!--依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,如果你想要构建两个单独的构件成JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。-->
<classifier></classifier>
<!--仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。-->
<systemPath></systemPath>
<!--当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题-->
<exclusions>
<exclusion>
<artifactId>spring-core</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
<!--可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。可选依赖阻断依赖的传递性。-->
<optional>true</optional>
</dependency>
</dependencies>
<!--依赖版本约束,如果dependencies中没有指定jar版本,会按照dependencyManagement中的默认版本进行导入-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId/>
<artifactId/>
<version/>
</dependency>
</dependencies>
</dependencyManagement>
自定义属性值
<!--自定义属性管理-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-boot.version>1.4.4.RELEASE</spring-boot.versi