【Java】Maven的pom.xml
2018-10-07 本文已影响0人
嗖嗖编程
Java项目常用maven管理,了解一下pom.xml
一.什么是pom
pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。
二.内容注解
<!-- 当前POM模型的版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 父项目坐标 -->
<parent>
<groupId>项目组织唯一的标识符(com.xxx)</groupId>
<artifactId>项目的唯一的标识符(项目名称)</artifactId>
<version>版本号</version>
<!--父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。-->
<relativePath></relativePath>
</parent>
<!-- 项目坐标 -->
<groupId>项目组织唯一的标识符(com.xxx)</groupId>
<artifactId>项目的唯一的标识符((项目名称))</artifactId>
<packaging>打包类型</packaging>
<version>版本号</version>
<!-- 项目信息 -->
<name>名称</name>
<description>描述</description>
<url>网址</url>
<inceptionYear>工程的初始时间</inceptionYear>
<!-- 属性 -->
<properties>
<!-- 定义一些常量 -->
<jdk.version>1.7</jdk.version>
<servlet.api.version>3.0.1</servlet.api.version>
<jsp.api.version>2.1</jsp.api.version>
<junit.version>4.11</junit.version>
<mysql.version>5.1.21</mysql.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 依赖管理,父项目中用来统一管理依赖的,子项目中直接使用dependencies -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet.api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 依赖项 -->
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet.api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<!--构建项目需要的信息-->
<build>
<!--该元素设置了项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。-->
<sourceDirectory></sourceDirectory>
<!--该元素设置了项目脚本源码目录,该目录和源码目录不同:绝大多数情况下,该目录下的内容 会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。-->
<scriptSourceDirectory></scriptSourceDirectory>
<!--该元素设置了项目单元测试使用的源码目录,当测试项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。-->
<testSourceDirectory></testSourceDirectory>
<!--被编译过的应用程序class文件存放的目录。-->
<outputDirectory></outputDirectory>
<!--被编译过的测试class文件存放的目录。-->
<testOutputDirectory></testOutputDirectory>
<!--使用来自该项目的一系列构建扩展-->
<extensions>
<!--描述使用到的构建扩展。-->
<extension>
<!--构建扩展的groupId-->
<groupId></groupId>
<!--构建扩展的artifactId-->
<artifactId></artifactId>
<!--构建扩展的版本-->
<version></version>
</extension>
</extensions>
<!--当项目没有规定目标(Maven2 叫做阶段)时的默认值-->
<defaultGoal></defaultGoal>
<!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。-->
<resources>
<!--这个元素描述了项目相关或测试相关的所有资源路径-->
<resource>
<!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。-->
<targetPath></targetPath>
<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
<filtering></filtering>
<!--描述存放资源的目录,该路径相对POM路径-->
<directory></directory>
<!--包含的模式列表,例如**/*.xml.-->
<includes></includes>
<!--排除的模式列表,例如**/*.xml-->
<excludes></excludes>
</resource>
</resources>
<!--这个元素描述了单元测试相关的所有资源路径,例如和单元测试相关的属性文件。-->
<testResources>
<!--这个元素描述了测试相关的所有资源路径,参见build/resources/resource元素的说明-->
<testResource>
<targetPath></targetPath>
<filtering></filtering>
<directory></directory>
<includes></includes>
<excludes></excludes>
</testResource>
</testResources>
<!--构建产生的所有文件存放的目录-->
<directory></directory>
<!--产生的构件的文件名,默认值是${artifactId}-${version}。-->
<finalName></finalName>
<!--当filtering开关打开时,使用到的过滤器属性文件列表-->
<filters></filters>
<!--子项目可以引用的默认插件信息。该插件配置项直到被引用时才会被解析或绑定到生命周期。给定插件的任何本地配置都会覆盖这里的配置-->
<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>
<!--任何配置是否被传播到子项目-->
<inherited/>
<!--作为DOM对象的配置-->
<configuration/>
</plugin>
</plugins>
</pluginManagement>
<!--使用的插件列表-->
<plugins>
<!--参见build/pluginManagement/plugins/plugin元素-->
<plugin>
<groupId/><artifactId/><version/><extensions/>
<executions>
<execution>
<id/><phase/><goals/><inherited/><configuration/>
</execution>
</executions>
<dependencies>
<!--参见dependencies/dependency元素-->
<dependency>
</dependency>
</dependencies>
<goals/><inherited/><configuration/>
</plugin>
</plugins>
</build>
<licenses>证书列表</licenses>
<!--描述项目所属组织的各种属性。Maven产生的文档用-->
<organization>
<!--组织的全名-->
<name></name>
<!--组织主页的URL-->
<url></url>
</organization>
<!--项目开发者列表-->
<developers>
<!--某个项目开发者的信息-->
<developer>
<!--SCM里项目开发者的唯一标识符-->
<id></id>
<!--项目开发者的全名-->
<name></name>
<!--项目开发者的email-->
<email></email>
<!--项目开发者的主页的URL-->
<url></url>
<!--项目开发者在项目中扮演的角色,角色元素描述了各种角色-->
<roles>
<role></role>
<role></role>
</roles>
<!--项目开发者所属组织-->
<organization></organization>
<!--项目开发者所属组织的URL-->
<organizationUrl></organizationUrl>
<!--项目开发者属性,如即时消息如何处理等-->
<properties>
<dept></dept>
</properties>
<!--项目开发者所在时区, -11到12范围内的整数。-->
<timezone></timezone>
</developer>
</developers>
<!--项目的其他贡献者列表-->
<contributors>
<!--项目的其他贡献者。参见developers/developer元素-->
<contributor>
</contributor>
</contributors>