pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项目相关因素,是项目级别的配置文件。
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->
<modelVersion>4.0.0</modelVersion>
<!--
项目坐标
(1)groupId:公司或者组织的唯一标志,并且配置时生成的路径也是由此生成,如com.gugugutime.write,
maven会将该项目打成的jar包放本地路径:/com/gugugutime/write
(2)artifactId:本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的
(3)version:本项目目前所处的版本号
-->
<groupId>com.gugugutime.write</groupId>
<artifactId>write-demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<!--
打包的机制,如pom、jar、maven-plugin、ejb、war、ear、rar、par,默认为jar。
(1)pom:父类型都为pom类型,pom类型打包后项目里没有java代码,
主要用于聚合工程传递依赖使用。比如微服务的父项目就是pom类型。
(2)jar:作为服务时打包
-->
<packaging>jar</packaging>
<!--
用来标识特殊jar包的,有时仅靠groupId+artifactId+version不能确定jar,需要该值才能确定。
帮助定义构件输出的一些附属构件,附属构件与主构件对应,有时候需要加上classifier才能唯一的确定该构件。
注意:不能直接定义项目的classifer,因为附属构件不是项目直接默认生成的,而是由附加的插件帮助生成的
-->
<classifier>core</classifier>
<!--
为pom定义一些常量,在pom中的其它地方可以直接引用
比如下面的<mysql.version>5.1.47</mysql.version>就在dependency中被使用
使用方式如下:${mysql.version}
-->
<properties>
<file.encoding>UTF-8</file.encoding>
<java.source.version>1.5</java.source.version>
<java.target.version>1.5</java.target.version>
<mysql.version>5.1.47</mysql.version>
</properties>
<!--
定义本项目的依赖关系
最简单的依赖仅需要groupId+artifactId+version:一般情况下,maven是通过groupId、artifactId、version这三个元素值(俗称坐标)来检索该构件, 然后引入你的工程。
如果别人想引用你现在开发的这个项目(前提是已开发完毕并发布到了远程仓库),就需要在他的pom
文件中新建一个dependency节点,将本项目的groupId、artifactId、version写入,maven就会把你
上传的jar包下载到他的本地。
-->
<dependencies>
<!-- 最简单的依赖仅需要groupId+artifactId+version -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
<!-- 依赖配置中的version使用properties设置的参数 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- 复杂一点的依赖配置 -->
<dependency>
<!-- 指定依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--
maven认为,程序对外部的依赖会随着程序的所处阶段和应用场景而变化,所以maven中的依赖关系有作用域(scope)的限制。
scope包含如下的取值:compile(编译范围)、provided(已提供范围)、runtime(运行时范围)、test(测试范围)、system(系统范围)
-->
<scope>test</scope>
<!--
设置指依赖是否可选,默认为false,即子项目默认都继承;
为true,则子项目必需显示的引入,与dependencyManagement里定义的依赖类似
-->
<optional>false</optional>
<!--
屏蔽依赖关系
maven的pom依赖其中有一点是将关联的依赖全都引入进来,这个标签在这的作用就是如果关联的依赖和引入的其他依赖可能存在冲突,就必须将关联的依赖排除掉,所以就用这个标签。
-->
<exclusions>
<!-- 不使用tomcat -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--
打包
-->
<build>
<!--
resources:打包时用于包含或者排除某些资源文件
-->
<resources>
<resource>
<directory>src/main/java</directory>
<!-- 打包时包含的资源文件 -->
<includes>
<include>**/*.xml</include>
</includes>
<!-- 打包时排除的资源文件 -->
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<!--
plugins:打包时用于指定使用的插件
-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>