pom.xml 文件是 Maven 的配置文件。
用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等
根标签是<project>
基本配置
头信息
这一部分是最外层的根标签以及命名空间和xsd文件的引入
<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>
第一部分:固定部分
这一部分主要是 Maven 工程的基本信息
<project ……>
<!-- 声明项目应该遵循那个 POM 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 组名,公司或者组织的唯一标识 -->
<groupId>youka</groupId>
<!-- 项目名 -->
<artifactId>Spring</artifactId>
<!-- 版本 -->
<version>0.0.1-SNAPSHOT</version>
<!-- 打包类型 -->
<packaging>war</packaging>
<!-- 生成 Maven 文档时会使用的标签 -->
<name>Spring Maven Webapp</name>
<url>http://maven.apache.org</url>
</project>
字段 | 描述 |
---|---|
modelVersion | 声明项目描述符遵循哪一个POM模型版本。 这个基本不会修改,但是仍然是必不可少的 |
groupId | 组id,公司或者组织的唯一标识 |
artifactId | 项目id,在groupId中依靠artifactId区分出不同的项目 |
version | 版本号 |
packaging | 打包类型,可取值:jar,war,pom 等等 |
上面列出的5个是比较重要的,另外还有像 name 和 url 这两个标签的作用和注释差不多,是一些描述性的东西,是 Maven 产生的文档会用的,了解即可。
自定义属性
在第一部分和第二部分之间,有时候会用到一个自定义属性,自定义属性类似于 Java 中定义成员变量,其目的主要是维护时修改版本方便,只需要统一在这里修改即可,不需要一个个翻找依赖,在使用时,用${标签名}的形式使用该标签的值
<project……>
...
<!-- 自定义属性 -->
<properties>
<!-- 标签名是key,内容是value,使用时用key.value获取 -->
<spring.version>4.3.11.RELEASE</spring.version>
<mysql.version>8.0.20</mysql.version>
</properties>
...
</project>
第二部分:依赖
重点掌握,最基础的要求
<project...>
...
<properties>
<spring.version>4.3.11.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
...
</project>
第二个依赖引入时,在 version 标签处使用的就是自定义属性名
字段 | 说明 |
---|---|
groupId | 依赖项的组织名 |
artifactId | 依赖项的子项目名 |
version | 依赖项的版本 |
scope | 依赖项的适用范围 ,表示在构建整个Maven工程的那个阶段或者那个范围可以被使用,它的值包括compile,provided,runtime,test,system,exclusions |
type | 依赖类型一般省略,默认类型是jar,其他还有jar,war,ejb-client和test-jar |
optional | 可选依赖,如果你在项目B中把C依赖声明为可选,你就需要在依赖于B的项目(例如项目A)中显式的引用对C的依赖。 |
第三部分:构建
主要是插件的配置等
<project...>
...
<build>
<finalName></finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<!-- 配置插件信息 -->
<configuration>
<!-- 代码是在 Jdk1.8 上编辑的-->
<source>1.8</source>
<!-- 代码应该运行在 Jdk1.8 上 -->
<target>1.8</target>
<encoding>UTF-8<encoding>
</configuration>
</plugin>
<plugin>
<!-- 定位 -->
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.3.7.v20160115</version>
<configuration>
<!-- http 端口号 -->
<httpConnector>
<port>8081</port>
</httpConnector>
<webApp>
<!-- 工程名 -->
<contextPath>/${project.artifactId}</contextPath>
</webApp>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
字段 | 描述 |
---|---|
finalName | 工程在打包时的名字,如果不写,默认名字是 groupId+artifactId+version |
plugins | 和 dependencies 元素一样,内部可以包含多个 plugin 元素 |
configuration | 配置插件具体信息 |
配置 jetty 的时候,配置 contextPath 表示访问时的工程名,如果不配置,在访问的时候,默认是不使用工程名的,但是一般是会需要配置工程名的。
在 contextPath 中的${project.artifactId}
表示的是 project 标签下的 aritifactId 标签的值,也就是就是我们在第一部分中配置的<artifactId>Spring</artifactId>
的值 Spring