原文地址:http://www.cnblogs.com/ygj0930/p/6628201.html
一个pom.xml中包含了许多标签,各个标签是对项目生命周期、依赖管理的配置。常用的主要有:
1:<peoject>:pom.xml的根标签,一个maven项目用一对<peoject></project>标签包裹。
2:<modelVersion>:maven的版本
3:当前项目的坐标以及打包方式:
<groupId>:企业网址反写+项目名
<artifactId>:项目名-模块名
<version>:版本号+类型
版本号由三个整数表示,每个整数用“.”分隔,表示:大版本号.分支版本号.小版本号
类型:版本类型。主要有:snapshot快照版本(简化版本)、alpha内测版、beta公测版、release稳定版、GA正式发布版
<packaging>:打包类型,默认是jar,可以配置成war、zip、pom类型。
4:<name>:当前项目名
5:<url>:项目地址
6:<description>:项目描述信息
7:<developers>:开发者信息
8:<licenses>:项目许可证信息,用来发布时授予别人使用此项目的权利
9:<organization>:组织信息,企业信息
以上都是对这个maven项目的相关信息配置。
10:<properties>:属性值标签,也叫变量标签。与Ant中的property一样,可以通过这个标签包含一些属性并指定属性值。那么在pom.xml的其他地方,可以通过EL表达式访问变量的方法——${属性名} 来获取具体的属性值。一般这个用来作为整个pom.xml中需要重复使用的内容或者全局变量使用。
11:依赖标签
<dependencies>
<!–一个依赖包–>
<dependency>
<!–通过坐标指定依赖包–>
<groupId> </groupId>
<artifactId> </artifactId>
<version> </version>
<!–可选项:依赖范围。有六个可选值:常用compile/provided/test/runtime等-->
<scope>一个范围</scope>
<!–可选项:排除依赖传递:即:当前项目依赖当前配置的依赖包A时,如果这个依赖包又依赖其他包B,这里可以选择排除依赖的传递性,不下载导入B–>
<exclusions>
<exclusion>
<!--被排除的依赖包坐标--> <groupId> </groupId> <artifactId> </artifactId> <version> </version>
</exclusion> </exclusions> </dependency> </dependencies>
12:依赖管理标签:主要用于制定父pom.xml,其他项目可以继承这个pom.xml,从而避免重复定义某些depency。
<depencyManagement> <depencies> <depency> 依赖包的坐标... </depency> </depencies> </depencyManagement>
13:<build>:项目支持标签,一般用来引入插件
<build> <plugins> <plugin> <!--插件坐标--> <groupId> </groupId> <artifactId> </artifactId> <version> </version> 其他设置...
</plugin>
</plugins>
</build>
14:<parent>:继承标签,用于继承父项目。
15:<moudules>:聚合标签,用于聚合多个maven项目,这样用某指令执行这个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">
<!--指定了当前pom的版本-->
<modelVersion>4.0.0</modelVersion>
<!--坐标信息 start-->
<groupId>反写的公司网址+项目名</groupId> <!--主项目标识-->
<artifactId>项目名+模块名</artifactId>
<!--第一个0表示大版本号
第二个0表示分支版本号
第三个0标识小版本号
0.0.1SNAPSHOT
snapshot快照
alpha内测
beta公测
Release稳定
GA正式发布
-->
<version></version>
<!--打包方式:默认是jar
war zip pom
-->
<packaging></packaging>
<!--坐标信息 end-->
<!--项目描述名-->
<name>hi</name>
<!--项目地址-->
<url>http://maven.apache.org</url>
<!--项目描述-->
<description></description>
<!--开发人员列表-->
<developers></developers>
<!--许可证信息-->
<license></license>
<!--组织信息-->
<organization></organization>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--依赖列表-->
<dependencies>
<!--依赖项-->
<dependency>
<!--项目坐标 start-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<type></type>
<scope>test</scope><!--指依赖范围-->
<!--设置依赖范围是否可选:默认false-->
<optional></optional>
<!--排除依赖传递列表-->
<executions>
<execution></execution>
</executions>
<!--项目坐标 end-->
</dependency>
</dependencies>
<!--依赖的管理-->
<!--不会运行,即不会调用到依赖中
一般定义在父模块中,供子模块调用
-->
<dependencyManagement>
<dependencies>
<dependency></dependency>
</dependencies>
</dependencyManagement>
<!--提供支持-->
<build>
<!--插件列表-->
<plugins>
<plugin>
<!--坐标-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<!--子模块对父模块的继承-->
<parent></parent>
<!--聚合多个模块进行编译,可多个子项-->
<modules>
<module></module>
</modules>
</project>
参考:https://www.cnblogs.com/youzhibing/p/5427130.html#_label4