Maven pom.xml

1、定义:

POM全称项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。不过这个文件中包含了该项目所有相关信息(项目唯一ID、项目依赖、项目url、项目开发者等一切相关信息)。

2、常见使用
<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/maven-v4_0_0.xsd">
	
	<!--声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 -->
	<modelVersion>4.0.0</modelVersion>
	
	<!--g:项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 如com.myhome.app生成的相对路径为:/com/myhome/app -->
	<!-- a:构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;在某个特定的group ID下,artifact ID也必须是唯一的。构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源 码,二进制发布和WARs等。 -->
	<!--v:项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
	<!--gav可以唯一确定一个maven项目-->
	<groupId>asia.banseon</groupId>
	<artifactId>banseon-maven2</artifactId>
	<version>1.0-SNAPSHOT</version>
	
	<!--项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 -->
	<packaging>jar</packaging>
	<!--项目的名称, Maven产生的文档用 -->
	
	<!--描述了这个项目构建环境中的前提条件。 -->
	<prerequisites>
		<!--构建该项目或使用该插件所需要的Maven的最低版本 -->
		<maven></maven>
	</prerequisites>
	
	<!--构建项目需要的信息 -->
	<build>
	<!--子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置 -->
		<pluginManagement>
			<!--使用的插件列表 。 -->
			<plugins>
				<!--plugin元素包含描述插件所需要的信息。 -->
				<plugin>
					<!--插件在仓库里的group ID -->
					<groupId />
					<!--插件在仓库里的artifact ID -->
					<artifactId />
					<!--被使用的插件的版本(或版本范围) -->
					<version />
					<!--是否从该插件下载Maven扩展(例如打包和类型处理器),由于性能原因,只有在真需要下载时,该元素才被设置成enabled。 -->
					<extensions />
					<!--在构建生命周期中执行一组目标的配置。每个目标可能有不同的配置。 -->
					<executions>
						<!--execution元素包含了插件执行需要的信息 -->
						<execution>
							<!--执行目标的标识符,用于标识构建过程中的目标,或者匹配继承过程中需要合并的执行目标 -->
							<id />
							<!--绑定了目标的构建生命周期阶段,如果省略,目标会被绑定到源数据里配置的默认阶段 -->
							<phase />
							<!--配置的执行目标 -->
							<goals />
							<!--配置是否被传播到子POM -->
							<inherited />
							<!--作为DOM对象的配置 -->
							<configuration />
						</execution>
					</executions>
					<!--项目引入插件所需要的额外依赖 -->
					<dependencies>
						<!--参见dependencies/dependency元素 -->
						<dependency>
							......
						</dependency>
					</dependencies>

				</plugin>
			</plugins>
		</pluginManagement>
	</build>
	
	<!--发现依赖和扩展的远程仓库列表。 -->
	<repositories>
		<!--包含需要连接到远程仓库的信息 -->
		<repository>
			<!--远程仓库唯一标识符。可以用来匹配在settings.xml文件里配置的远程仓库 -->
			<id>banseon-repository-proxy</id>
			<!--远程仓库名称 -->
			<name>banseon-repository-proxy</name>
			<!--远程仓库URL,按protocol://hostname/path形式 -->
			<url>http://192.168.1.169:9999/repository/</url>
		</repository>
	</repositories>
	
	<!--发现插件的远程仓库列表,这些插件用于构建和报表 -->
	<pluginRepositories>
		<!--包含需要连接到远程插件仓库的信息.参见repositories/repository元素 -->
		<pluginRepository>
			......
		</pluginRepository>
	</pluginRepositories>
 
	<!--该元素描述了项目相关的所有依赖。 这些依赖组成了项目构建过程中的一个个环节。它们自动从项目定义的仓库中下载。要获取更多信息,请看项目依赖机制。 -->
	<dependencies>
		<dependency>
			<!--依赖的group ID -->
			<groupId>org.apache.maven</groupId>
			<!--依赖的artifact ID -->
			<artifactId>maven-artifact</artifactId>
			<!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。 -->
			<version>3.8.1</version>
			<!-- 依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应,尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。如果设置extensions为 true,就可以在 plugin里定义新的类型。所以前面的类型的例子不完整。 -->
			<type>jar</type>	
		</dependency>
	</dependencies>
	
		<plugins>
			<!--plugin元素包含描述报表插件需要的信息 -->
			<plugin>
				<!--报表插件在仓库里的group ID -->
				<groupId />
				<!--报表插件在仓库里的artifact ID -->
				<artifactId />
				<!--被使用的报表插件的版本(或版本范围) -->
				<version />
				<!--任何配置是否被传播到子项目 -->
				<inherited />
				<!--报表插件的配置 -->
				<configuration />
				</reportSets>
			</plugin>
		</plugins>
	</reporting>
</project>