Maven配置文件全解析

来源:互联网 发布:数据库 报错被截断 编辑:程序博客网 时间:2024/05/10 04:46

<!-- 项目对象模型Project Object Model配置文件全解析 -->

 

<!-- project元素是根元素,以下列出了根元素下所有可能的元素信息 -->

<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">

        

         <!-- 父项目节点声明,如果模型不定义groupId,version,那么他们的值从父节点继承 -->

         <parent>

                   <!-- 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。 -->

                   <groupId>COM-AH-SSH</groupId>

                   <!-- 定义了当前Maven项目在groupId中的唯一ID,一般跟项目的名称一致,my如项目名称为:project,则artifactIdmyproject  -->

                   <artifactId></artifactId>

                   <!-- 指定了maven项目当前的版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.01.1-SNAPSHOT1.12.0等等。 -->

                   <version></version>

                   <!-- POM模型的相对路径,默认值为../pom.xml 此路径会优先查找,然后是本地仓库,最后是远程仓库 -->

                   <relativePath></relativePath>

         </parent>  

        

         <!-- 声明POM模型符合的版本号,4.0.0版本是当前仅有的可以被Maven2&3同时支持的POM版本,它是必须的 -->

         <modelVersion>4.0.0</modelVersion>

         <!-- 定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,它以创建这个项目的组织名称的逆向域名(reverse domain name)开头。 -->

         <groupId></groupId>

         <!-- 定义了当前Maven项目在groupId中的唯一ID,一般跟项目的名称一致,my如项目名称为:project,则artifactIdmyproject  -->

         <artifactId></artifactId>

         <!-- 指定了maven项目当前的版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.01.1-SNAPSHOT1.12.0等等。 -->

         <version></version>

         <!-- 项目产品的打包方式:比如pom,jar,maven-plugin,ejb,war,ear,rar,par,插件可以创建自己的打包方式,因此没有列出所有可能的方式,默认方式为:jar方式 -->

         <packaging></packaging>

         <!-- 项目的名称,主要用于生成文档 ,在文档中显示的名称-->

         <name></name>

         <!-- 项目描述,主要用于生成文档 ,在文档中对项目的描述-->

         <description></description>

         <!-- 项目主页的链接 -->

         <url></url>

         <!-- 起始年份,四位数字,在生成copyright信息时引用  -->

         <inceptionYear></inceptionYear>

         <!-- 描述组织的各种属性,用于生成文档和生成copyright信息时引用  -->

         <organization>

                   <!-- 组织名称 -->

                   <name></name>

                   <!-- 组织主页连接 -->

                   <url></url>

         </organization>

         <!-- 描述项目的许可证,每个许可证通过<license>元素描述,只列出适用于本项目的许可证而不是依赖关系,列出的许可证有可选择性  -->

         <licenses>

                   <!-- 单个许可证描述 -->

                   <license>

                            <!-- 合法的许可证名称 -->

                            <name></name>

                            <!-- 许可证官方链接 -->

                            <url></url>

                            <!-- 分布的主要方法 repo:远程仓库下载 manul:用户必须手动下载安装依赖 -->

                            <distribution></distribution>

                            <!-- 与此证书有关的附件信息 -->

                            <comments></comments>

                   </license>

         </licenses>

         <!-- 项目的提交者,可以有多个提交者:描述提交工程的贡献者 -->

         <developers>

                   <developer>

                            <!-- 项目团队中开发者唯一标识 -->

                            <id></id>

                            <!-- 开发者名称 -->

                            <name></name>

                            <!-- 开发者邮件 -->

                            <email></email>

                            <!-- 开发者首页链接 -->

                            <url></url>

                            <!-- 开发者组织机构 -->

                            <organization></organization>

                            <!-- 组织机构链接 -->

                            <organizationUrl></organizationUrl>

                            <!-- 开发者角色 -->

                            <roles>

                                     <!-- 角色名称 -->

                                     <role></role>

                            </roles>

                            <!-- 开发者所在时区,是一个数字范围 或一个有效的时区-->

                            <timezone></timezone>

                            <properties>

                                     <key>value</key>

                            </properties>

                   </developer>

         </developers>

         <!-- 项目的贡献者者,可以有多个贡献者 :描述未提交工程的贡献者,定义和developers类似-->

         <contributors>

                   <contributor>

                            <!-- 开发者名称 -->

                            <name></name>

                            <!-- 开发者邮件 -->

                            <email></email>

                            <!-- 开发者首页链接 -->

                            <url></url>

                            <!-- 开发者组织机构 -->

                            <organization></organization>

                            <!-- 组织机构链接 -->

                            <organizationUrl></organizationUrl>

                            <!-- 开发者角色 -->

                            <roles>

                                     <!-- 角色名称 -->

                                     <role></role>

                            </roles>

                            <!-- 开发者所在时区,是一个数字范围 或一个有效的时区-->

                            <timezone></timezone>

                            <properties>

                                     <key>value</key>

                            <properties/>

                   </contributor>

         </contributors>

         <!-- 描述有关项目的邮件列表 -->

         <mailingLists>

                   <!-- 单个邮件描述 方式-->

                   <mailingList>

                            <!-- 邮件名称 -->

                            <name></name>

                            <!-- 电子邮件地址或链接,可以用来订阅邮件列表 -->

                            <subscribe></subscribe>

                            <!-- 电子邮件地址或链接,可以用来取消订阅邮件列表 -->

                            <unsubscribe></unsubscribe>

                            <!-- 电子邮件地址或链接,可以用来发布到邮件列表 -->

                            <post></post>

                            <!-- 链接到一个网址,您可以浏览邮件列表存档 -->

                            <archive></archive>

                            <!-- 链接到其他网址,您可以浏览邮件列表存档  -->

                            <otherArchives></otherArchives>

                   </mailingList>

         </mailingLists>

         <!-- 描述项目创建环境的先决条件 -->

         <prerequisites>

                   <!-- maven构建项目所需的最低版本,或使用这个插件 -->

                   <maven>2.0</maven>

         </prerequisites>

         <!-- 模块(有时称为子项目)建立作为这个项目的一部分。每个模块是一个相对路径,列出该目录包含模块 -->

         <modules>

                   <!-- 模块的名称列表 -->

                   <module>Common</module>

         </modules>

         <!-- 项目规范配置管理使用的工具,如: CVS, Subversion,  -->

         <scm>

                   <!-- 资源控制管理链接:描述仓库和怎么链接仓库,此链接是只读的 -->

                   <connection>scm:svn:http://</connection>

                   <!-- 资源控制管理链接:为开发者提供的链接,此连接不是只读的 -->

                   <developerConnection>scm:svn:https://</developerConnection>

                   <!-- 标记当前代码,开发期间放在头部 -->

                   <tag></tag>

                   <!-- URL到项目配置库的浏览 -->

                   <url>http://</url>

         </scm>

         <!-- 项目问题缺陷跟踪系统 -->

         <issueManagement>

                   <!-- 问题管理系统的名称,比如(基于Web的)通用软件缺陷追踪工具 -->

                   <system></system>

                   <!-- 问题管理系统的链接 -->

                   <url></url>

         </issueManagement>

         <!-- 项目持续集成信息设置自动build系统,一些集成程序包括continuum,Cruise control-->

         <ciManagement>

                   <!-- 持续集成系统名称,比如连续统一体 -->

                   <system></system>

                   <!-- 持续集成链接假如有web接口 -->

                   <url></url>

                   <!-- 构建失败时通知开发者,包括通知的信息和通知模式 -->

                   <notifiers>

                            <!-- 内容模型 -->

                            <notifier>

                                     <!-- 发送通知的机制/方式 -->

                                     <type></type>

                                     <!-- 是否发送错误通知 -->

                                     <sendOnError></sendOnError>

                                     <!-- 是否发送失败通知 -->

                                     <sendOnFailure></sendOnFailure>

                                     <!-- 是否发送成功通知 -->

                                     <sendOnSuccess></sendOnSuccess>

                                     <!-- 是否发送警告通知 -->

                                     <sendOnWarning></sendOnWarning>

                                     <!-- 通知发送的地址,比如邮件地址 -->

                                     <address></address>

                                     <!-- 扩展配置特定于通知人去哪 -->

                                     <configuration>

                                               <!-- 键值对 -->

                                               <key>value</key>

                                     <configuration/>

                            </notifier>

                   </notifiers>

         </ciManagement>

         <!-- 项目分布信息支持部署网站和构件到远程web服务器和不同仓库 -->

         <distributionManagement>

                   <!-- 部署项目构件到远程存储库  -->

                   <repository>

                            <!-- 是否指定快照独特的版本包含时间戳和构建数字,或每次都使用相同的版本 -->

                            <uniqueVersion></uniqueVersion>

                            <!-- 远程仓库的唯一标识,用于匹配 settings.xml中的仓库配置 -->

                            <id></id>

                            <!-- 可以被阅读的名称 -->

                            <name></name>

                            <!-- 远程仓库的url连接地址 -->

                            <url></url>

                            <!-- 远程仓库的布局类型用于定位和存储构件,可以遗留或默认 -->

                            <layout></layout>

                   </repository>

                   <!-- 部署构件的快照版本,如果没有指定,默认为仓库的值 -->

                   <snapshotRepository>

                            <!-- 是否指定快照独特的版本包含时间戳和构建数字,或每次都使用相同的版本 -->

                            <uniqueVersion></uniqueVersion>

                            <!-- 远程仓库的唯一标识,用于匹配 settings.xml中的仓库配置 -->

                            <id></id>

                            <!-- 可以被阅读的名称 -->

                            <name></name>

                            <!-- 远程仓库的url连接地址 -->

                            <url></url>

                            <!-- 远程仓库的布局类型用于定位和存储构件,可以遗留或默认 -->

                            <layout></layout>

                   </snapshotRepository>

                   <!-- 项目部署的web站点信息 -->

                   <site>

                            <!-- 项目部署位置的唯一标识符 ,用于匹配 settings.xml中的site站点配置-->

                            <id></id>

                            <!-- 可以被阅读的名称 -->

                            <name></name>

                            <!-- 项目部署位置的链接 -->

                            <url></url>

                   </site>

                   <!-- 项目下载页的链接,如果没有指定,用户将参考主页给的链接,指定目的是辅助定位由于证书限制而不在仓库中的构件 -->

                   <downloadUrl></downloadUrl>

                   <!-- 重新定位被移动到新建群组ID或构件ID的构件信息 -->

                   <relocation>

                            <!-- 新建群组的ID -->

                            <groupId></groupId>

                            <!-- 新构件的ID -->

                            <artifactId></artifactId>

                            <!-- 新构件的版本 -->

                            <version></version>

                            <!-- 展示移动的附件信息,比如移动原因等 -->

                            <message></message>

                   </relocation>

                   <!-- 指定构件在远程仓库中的状态 ,他的更新是通过工具放置到仓库的,一定不能放到本地项目中-->

                   <status></status>

         </distributionManagement>

         <!-- 定义公共的属性常量值,被整个模型使用,也可以用作过滤资源,格式:<name>value</name> -->

         <!--

         <properties>

                   <key>value</key>

         <properties/>

         -->

         <!-- 默认的项目依赖信息从此处继承,如果在子项目中不写该依赖项,那么子项目中是不会从父项目继承该依赖项的-->

         <!-- 只有在子项目中写了该依赖项,才会从父项目中继承该项,并且version  scope 都读取自父pom -->

         <dependencyManagement>

                   <!-- 依赖集合定义,此处只是定义,只有被子项目引用时才会使用 -->

                   <dependencies>

                            <!-- 定义的单个的依赖信息 -->

                            <dependency>

                                     <!-- 依赖所属的组 -->

                                     <groupId></groupId>

                                     <!-- 依赖的构件ID -->

                                     <artifactId></artifactId>

                                     <!-- 依赖的版本 -->

                                     <version></version>

                                     <!-- 依赖的类型:默认值为jar类型 -->

                                     <type></type>

                                     <!-- 依赖的分类器,它表示在相同版本下针对不同的环境或者jdk使用的jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应的jar -->

                                     <classifier></classifier>

                                     <!-- 依赖的作用范围 -->

                                     <scope></scope>

                                     <!-- 只用于系统范围,值可以被将来的版本代替,路径的值只能是绝对路径,比如${java.home} -->

                                     <systemPath></systemPath>

                                     <!-- 排除相关的传递依赖 -->

                                     <exclusions>

                                               <!-- 排除一个传递依赖所需的信息 -->

                                               <exclusion>

                                                        <!-- 排除的构件ID -->

                                                        <artifactId/>

                                                        <!-- 排除的群组ID -->

                                                        <groupId/>

                                               </exclusion>

                                     </exclusions>

                                     <!-- 声明依赖是否是可选的 -->

                                     <optional></optional>

                            </dependency>

                   </dependencies>

         </dependencyManagement>

         <!-- 定义项目中引用到的依赖,这些依赖在构件过程中会构建到项目类路径下,自动的从项目定义的仓库中下载 -->

         <dependencies>

                   <dependency>

                            <!-- 依赖所属的组 -->

                            <groupId></groupId>

                            <!-- 依赖的构件ID -->

                            <artifactId></artifactId>

                            <!-- 依赖的版本 -->

                            <version></version>

                            <!-- 依赖的类型,对应于项目坐标定义的packaging。大部分情况下,该元素不必声明,其默认值是jar -->

                            <type></type>

                            <!-- 依赖的分类器,它表示在相同版本下针对不同的环境或者jdk使用的jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应的jar -->

                            <classifier></classifier>

                            <!-- 依赖的作用范围 -->

                            <scope></scope>

                            <!-- 只用于系统范围,值可以被将来的版本代替,路径的值只能是绝对路径,比如${java.home} -->

                            <systemPath></systemPath>

                            <!-- 排除相关的传递依赖 -->

                            <exclusions>

                                     <!-- 排除一个传递依赖所需的信息 -->

                                     <exclusion>

                                               <!-- 排除的构件ID -->

                                               <artifactId></artifactId>

                                               <!-- 排除的群组ID -->

                                               <groupId></groupId>

                                     </exclusion>

                            </exclusions>

                            <!-- 标记依赖是否可选 -->

                            <optional></optional>

                   </dependency>

         </dependencies>

         <!-- 设定除中央仓库(repo1.maven.org/maven2/)外的其他仓库,按设定顺序进行查找 -->

         <repositories>

                   <repository>

                            <!-- 如何处理从仓库下载的发布版本 -->

                            <releases>

                                     <!-- 是否使用仓库下载此类型的构件 -->

                                     <enabled></enabled>

                                     <!-- 下载更新的频率:always总是  daily每日(默认)interval:XXX间隔:XXX(分钟) never从来没有-->

                                     <updatePolicy></updatePolicy>

                                     <!-- 当构件验证或校验失败时要做什么   ignore fail or warn -->

                                     <checksumPolicy></checksumPolicy>

                            </releases>

                            <!-- 如何处理从仓库下载的快照版本 -->

                            <snapshots>

                                     <!-- 是否使用仓库下载此类型的构件 -->

                                     <enabled></enabled>

                                     <!-- 下载更新的频率:always总是  daily每日(默认)interval:XXX间隔:XXX(分钟) never从来没有-->

                                     <updatePolicy></updatePolicy>

                                     <!-- 当构件验证或校验失败时要做什么   ignore fail or warn -->

                                     <checksumPolicy></checksumPolicy>

                            </snapshots>

                            <!-- 远程仓库的唯一标识,用于匹配 settings.xml中的仓库配置 -->

                            <id></id>

                            <!-- <!-- 可以被阅读的名称 --> -->

                            <name></name>

                            <!-- 仓库的url连接地址 -->

                            <url></url>

                            <!-- 仓库的布局类型用于定位和存储构件,可以遗留或默认 -->

                            <layout></layout>

                   </repository>

         </repositories>

         <!-- 配置Maven从什么地方下载插件构件,Maven的所有行为都是通过插件来完成的,其内部配置与<repository>类似 -->

         <pluginRepositories>

                   <pluginRepository>

                            <!-- 如何处理从仓库下载的发布版本 -->

                            <releases>

                                     <!-- 是否使用仓库下载此类型的构件 -->

                                     <enabled></enabled>

                                     <!-- 下载更新的频率:always总是  daily每日(默认)interval:XXX间隔:XXX(分钟) never从来没有-->

                                     <updatePolicy></updatePolicy>

                                     <!-- 当构件验证或校验失败时要做什么   ignore fail or warn -->

                                     <checksumPolicy></checksumPolicy>

                            </releases>

                            <!-- 如何处理从仓库下载的快照版本 -->

                            <snapshots>

                                     <!-- 是否使用仓库下载此类型的构件 -->

                                     <enabled></enabled>

                                     <!-- 下载更新的频率:always总是  daily每日(默认)interval:XXX间隔:XXX(分钟) never从来没有-->

                                     <updatePolicy></updatePolicy>

                                     <!-- 当构件验证或校验失败时要做什么   ignore fail or warn -->

                                     <checksumPolicy></checksumPolicy>

                            </snapshots>

                            <!-- 远程仓库的唯一标识,用于匹配 settings.xml中的仓库配置 -->

                            <id></id>

                            <!-- <!-- 可以被阅读的名称 --> -->

                            <name></name>

                            <!-- 仓库的url连接地址 -->

                            <url></url>

                            <!-- 仓库的布局类型用于定位和存储构件,可以遗留或默认 -->

                            <layout></layout>

                   </pluginRepository>

         </pluginRepositories>

         <!-- ################################################################################# -->

         <!--                                                                              Maven构建                                                                                  -->

         <!-- ################################################################################# -->

         <build>

                   <!-- 项目源代码的路径,项目被构建时会编译此路径下的代码 ,此路径指定为相对路径,比如src目录-->

                   <sourceDirectory>src</sourceDirectory>

                   <!-- 项目脚本资源路径,此资源在项目构建的时候会被复制到输出目录, 脚本是不能被编译的-->

                   <scriptSourceDirectory></scriptSourceDirectory>

                   <!-- 项目单元测试代码的路径,当测试的时候会被编译,此路径指定为相对路径,比如test目录 -->

                   <testSourceDirectory></testSourceDirectory>

                   <!-- 源代码被编译后的classes放置的目录,指输出目录 -->

                   <outputDirectory></outputDirectory>

                   <!-- 单元测试代码被编译后的classes放置的目录,指输出目录 -->

                   <testOutputDirectory/>

                   <!-- 项目使用的构件扩展 -->

                   <extensions>

                            <extension>

                                     <!-- 扩展构件的群组ID -->

                                     <groupId/>

                                     <!-- 扩展构件的构件ID -->

                                     <artifactId/>

                                     <!-- 扩展构件的版本号 -->

                                     <version/>

                            </extension>

                   </extensions>

                   <!-- 当项目没有指定目标时执行的默认目标 -->

                   <defaultGoal></defaultGoal>

                   <!-- 项目有关的类路径资源文件,比如一些属性文件等 -->

                   <resources>

                            <resource>

                                     <!-- 描述资源目标路径,资源文件放置的路径 -->

                                     <targetPath></targetPath>

                                     <!-- 资源是否被过滤 -->

                                     <filtering></filtering>

                                     <!-- 资源存储目录,相对路径 -->

                                     <directory></directory>

                                     <!-- 所包含文件的匹配格式,比如: **/*.xml -->

                                     <includes></includes>

                                     <!-- 所排除文件的匹配格式,比如: **/*.xml -->

                                     <excludes></excludes>

                            </resource>

                   </resources>

                   <!-- 项目有关的类路径测试资源文件,比如一些属性文件等  -->

                   <testResources>

                            <testResource>

                                     <!-- 描述资源目标路径,资源文件放置的路径 -->

                                     <targetPath></targetPath>

                                     <!-- 资源是否被过滤 -->

                                     <filtering></filtering>

                                      <!-- 资源存储目录,相对路径 -->

                                     <directory></directory>

                                     <!-- 所包含文件的匹配格式,比如: **/*.xml -->

                                     <includes></includes>

                                     <!-- 所排除文件的匹配格式,比如: **/*.xml -->

                                     <excludes></excludes>

                            </testResource>

                   </testResources>

                   <!-- 项目构建中产生的所有文件放置的目录 -->

                   <directory></directory>

                   <!-- 生成的构件被调用的最终名称,默认值为:${artifactId}-${version} -->

                   <finalName></finalName>

                   <!-- 用于定义指定filter属性文件位置,例如filter元素赋值filters/filter1.properties,那么这个文件里面就可以定义name=value对,这个name=value对的值就可以在工程pom中通过${name}引用,默认的filter目录是${basedir}/src/main/filters/ -->

                   <filters></filters>

                   <!--  -->

                   <!-- 项目中定义的默认插件信息供参考使用,除非被引用,否则不会被绑到生命周期内-->

                   <!-- 对于一个给定的插件,在任何地方配置后都会覆盖在此处定义的插件如果这个插件定义在这里 -->

                   <pluginManagement>

                            <!-- 插件列表 -->

                            <plugins>

                                     <!-- 一个插件定义的内容信息 -->

                                     <plugin>

                                               <!-- 插件在仓库中的群组ID -->

                                               <groupId></groupId>

                                               <!-- 插件在仓库中的构件ID -->

                                               <artifactId></artifactId>

                                               <!-- 插件在仓库中的版本号 -->

                                               <version></version>

                                               <!-- 构建生命周期中一组要执行的目标的说明 -->

                                               <executions>

                                                        <execution>

                                                                 <!-- 构建期间执行目标的唯一标识符 -->

                                                                 <id></id>

                                                                 <!-- 构建生命周期执行目标绑定的阶段 -->

                                                                 <phase></phase>

                                                                 <!-- 执行的目标配置,需要做什么工作 -->

                                                                 <goals></goals>

                                                                 <!-- 是否任何配置都会传播到子类配置 -->

                                                                 <inherited></inherited>

                                                                 <!-- 配置为DOM对象 -->

                                                                 <configuration></configuration>

                                                        </execution>

                                               </executions>

                                               <!-- 项目需要将附加的依赖介绍给插件类加载器 -->

                                               <dependencies>

                                                        <dependency>

                                                                 <!-- 依赖所属的组 -->

                                                                 <groupId></groupId>

                                                                 <!-- 依赖的构件ID -->

                                                                 <artifactId></artifactId>

                                                                 <!-- 依赖的版本 -->

                                                                 <version></version>

                                                                 <!-- 依赖的类型:默认值为jar类型 -->

                                                                 <type></type>

                                                                 <!-- 依赖的分类器,它表示在相同版本下针对不同的环境或者jdk使用的jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应的jar -->

                                                                

                                                                 <classifier></classifier>

                                                                 <!-- 依赖的作用范围 -->

                                                                 <scope></scope>

                                                                 <!-- 只用于系统范围,值可以被将来的版本代替,路径的值只能是绝对路径,比如${java.home} -->

                                                                 <systemPath></systemPath>

                                                                 <!-- 排除相关的传递依赖 -->

                                                                 <exclusions>

                                                                           <!-- 排除一个传递依赖所需的信息 -->

                                                                           <exclusion>

                                                                                    <!-- 排除的构件ID -->

                                                                                    <artifactId/>

                                                                                    <!-- 排除的群组ID -->

                                                                                    <groupId/>

                                                                          </exclusion>

                                                                 </exclusions>

                                                                 <!-- 声明依赖是否是可选的 -->

                                                                 <optional></optional>

                                                        </dependency>

                                               </dependencies>

                                               <!-- 是否任何配置都会传播到子类配置 -->

                                               <inherited></inherited>

                                               <!-- 配置为DOM对象 -->

                                               <configuration></configuration>

                                     </plugin>

                            </plugins>

                   </pluginManagement>

                  

                   <!-- 插件列表 -->

                   <plugins>

                            <!-- 一个插件定义的内容信息 -->

                            <plugin>

                                     <!-- 插件在仓库中的群组ID -->

                                     <groupId></groupId>

                                     <!-- 插件在仓库中的构件ID -->

                                     <artifactId></artifactId>

                                     <!-- 插件在仓库中的版本号 -->

                                     <version></version>

                                     <!-- 构建生命周期中一组要执行的目标的说明 -->

                                     <executions>

                                               <execution>

                                                        <!-- 构建期间执行目标的唯一标识符 -->

                                                        <id></id>

                                                        <!-- 构建生命周期执行目标绑定的阶段 -->

                                                        <phase></phase>

                                                        <!-- 执行的目标配置,需要做什么工作 -->

                                                        <goals></goals>

                                                        <!-- 是否任何配置都会传播到子类配置 -->

                                                        <inherited></inherited>

                                                        <!-- 配置为DOM对象 -->

                                                        <configuration></configuration>

                                               </execution>

                                     </executions>

                                     <!-- 项目需要将附加的依赖介绍给插件类加载器 -->

                                     <dependencies>

                                               <dependency>

                                                        <!-- 依赖所属的组 -->

                                                        <groupId></groupId>

                                                        <!-- 依赖的构件ID -->

                                                        <artifactId></artifactId>

                                                        <!-- 依赖的版本 -->

                                                        <version></version>

                                                        <!-- 依赖的类型:默认值为jar类型 -->

                                                        <type></type>

                                                        <!-- 依赖的分类器,它表示在相同版本下针对不同的环境或者jdk使用的jar,如果配置了这个元素,则会将这个元素名在加在最后来查找相应的jar -->

                                                        <classifier></classifier>

                                                        <!-- 依赖的作用范围 -->

                                                        <scope></scope>

                                                        <!-- 只用于系统范围,值可以被将来的版本代替,路径的值只能是绝对路径,比如${java.home} -->

                                                        <systemPath></systemPath>

                                                        <!-- 排除相关的传递依赖 -->

                                                        <exclusions>

                                                                 <!-- 排除一个传递依赖所需的信息 -->

                                                                 <exclusion>

                                                                           <!-- 排除的构件ID -->

                                                                           <artifactId/>

                                                                           <!-- 排除的群组ID -->

                                                                           <groupId/>

                                                                 </exclusion>

                                                        </exclusions>

                                                        <!-- 声明依赖是否是可选的 -->

                                                        <optional></optional>

                                               </dependency>

                                     </dependencies>

                                     <!-- 是否任何配置都会传播到子类配置 -->

                                     <inherited></inherited>

                                     <!-- 配置为DOM对象 -->

                                     <configuration></configuration>

                            </plugin>

                   </plugins>

         </build>

         <!-- 包含报告插件的规格生成maven网站报告, 执行mvn site时生成报告站点,所有的报告将被包含在导航栏浏览 -->

         <reporting>

                   <!-- 是否排除site generator默认产生的reports -->

                   <excludeDefaults></excludeDefaults>

                   <!-- 报告存储的位置,默认值为:${project.build.directory}/site ${basedir}/target/site -->

                   <outputDirectory></outputDirectory>

                   <plugins>

                            <plugin>

                                     <!-- 报告插件群组ID -->

                                     <groupId></groupId>

                                     <!-- 报告插件构件ID -->

                                     <artifactId></artifactId>

                                     <!-- 报告插件版本号 -->

                                     <version></version>

                                     <!-- 多种规格的一组报告,每一个可能有不同的配置 -->

                                     <!-- 设置execution goals,相当于build里面的executions。不同的是不能够绑定 a report to another phase,只能够是site -->

                                     <reportSets>

                                               <reportSet>

                                                        <!-- 报告组的唯一标识,当被pom继承时使用 -->

                                                        <id></id>

                                                        <!-- 报告列表从这个插件目标 -->

                                                        <reports>

                                                                 <report>javadoc</report>

                                                        </reports>

                                                        <!-- 是否可以被子类继承 -->

                                                        <inherited></inherited>

                                                        <!-- 报告生成时的配置 -->

                                                        <configuration></configuration>

                                               </reportSet>

                                     </reportSets>

                                     <!-- 这个插件配置是否应该提供给项目用于继承 -->

                                     <inherited/>

                                     <!-- 插件配置 -->

                                     <configuration></configuration>

                            </plugin>

                   </plugins>

         </reporting>

                  

         <!-- ################################################################################# -->

         <!-- profile的定义是为了覆盖pom内容,使配置有一定的灵活性 -->

         <!-- profile能为一个特殊的环境自定义一个特殊的构建,使得不同环境间构建的可移植性成为可能-->

         <!-- profile可以覆盖几乎所有pom.xml中的配置,profiles元素通常是pom.xml的最后一个元素-->

         <!-- 激活参数可以是activeByDefault,jdk,os,property,file,缺省属性 -->

         <!-- profile可以通过pom.xmlprofiles.xml/.m2/setting.xmlconf/setting.xml四个层次定义 -->

         <!-- 只需要其中一个成立就可以激活profile,如果第一个条件满足了,那么后面就不会在进行匹配  -->

         <!-- ################################################################################# -->

         <profiles>

                   <profile>

                            <!-- profile构建的唯一标识 -->

                            <id></id>

                            <!-- profile激活条件逻辑 -->

                            <activation>

                                     <!-- 指定profile是否通过默认方式激活 -->

                                     <activeByDefault></activeByDefault>

                                     <!-- 指定profile找到匹配的jdk时被激活 -->

                                     <jdk></jdk>

                                     <!-- 指定profile找到匹配的操作系统属性时被激活 -->

                                     <os>

                                               <!-- 操作系统名称 -->

                                               <name></name>

                                               <!-- 操作系统 例如windows linux -->

                                               <family></family>

                                               <!-- 操作系统体系结构 -->

                                               <arch></arch>

                                               <!-- 操作系统版本 -->

                                               <version></version>

                                     </os>

                                     <!-- 指定profile当系统属性被指定的守候激活 -->

                                     <property>

                                               <!-- 用于激活profile的指定属性名称 -->

                                               <name></name>

                                              <!-- 需要激活profile的属性值 -->

                                               <value></value>

                                     </property>

                                     <!-- 指定profile的激活基于一个存在的文件 -->

                                     <file>

                                               <!-- 文件的名称丢失激活 -->

                                               <missing></missing>

                                               <!-- 文件的名称存在激活 -->

                                               <exists></exists>

                                     </file>

                            </activation>

                           

                            <!-- ################################################################################# -->

                            <!-- 以下内容的配置和pom上面配置的内容基本类似,参考以上内容的配置 -->

                            <!-- ################################################################################# -->

                            <build>

                            <defaultGoal/>

                            <resources>

                            <resource>

                            <targetPath/>

                            <filtering/>

                            <directory/>

                            <includes/>

                            <excludes/>

                            </resource>

                            </resources>

                            <testResources>

                            <testResource>

                            <targetPath/>

                            <filtering/>

                            <directory/>

                            <includes/>

                            <excludes/>

                            </testResource>

                            </testResources>

                            <directory/>

                            <finalName/>

                            <filters/>

                            <pluginManagement>

                            <plugins>

                            <plugin>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <extensions/>

                            <executions>

                            <execution>

                            <id/>

                            <phase/>

                            <goals/>

                            <inherited/>

                            <configuration/>

                            </execution>

                            </executions>

                            <dependencies>

                            <dependency>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <type/>

                            <classifier/>

                            <scope/>

                            <systemPath/>

                            <exclusions>

                            <exclusion>

                            <artifactId/>

                            <groupId/>

                            </exclusion>

                            </exclusions>

                            <optional/>

                            </dependency>

                            </dependencies>

                            <goals/>

                            <inherited/>

                            <configuration/>

                            </plugin>

                            </plugins>

                            </pluginManagement>

                            <plugins>

                            <plugin>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <extensions/>

                            <executions>

                            <execution>

                            <id/>

                            <phase/>

                            <goals/>

                            <inherited/>

                            <configuration/>

                            </execution>

                            </executions>

                            <dependencies>

                            <dependency>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <type/>

                            <classifier/>

                            <scope/>

                            <systemPath/>

                            <exclusions>

                            <exclusion>

                            <artifactId/>

                            <groupId/>

                            </exclusion>

                            </exclusions>

                            <optional/>

                            </dependency>

                            </dependencies>

                            <goals/>

                            <inherited/>

                            <configuration/>

                            </plugin>

                            </plugins>

                            </build>

                           

                            <modules/>

                           

                            <distributionManagement>

                            <repository>

                            <uniqueVersion/>

                            <releases>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </releases>

                            <snapshots>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </snapshots>

                            <id/>

                            <name/>

                            <url/>

                            <layout/>

                            </repository>

                            <snapshotRepository>

                            <uniqueVersion/>

                            <releases>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </releases>

                            <snapshots>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </snapshots>

                            <id/>

                            <name/>

                            <url/>

                            <layout/>

                            </snapshotRepository>

                            <site>

                            <id/>

                            <name/>

                            <url/>

                            </site>

                            <downloadUrl/>

                            <relocation>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <message/>

                            </relocation>

                            <status/>

                            </distributionManagement>

                           

                            <properties>

                            <key>value</key>

                            <properties/>

                           

                            <dependencyManagement>

                            <dependencies>

                            <dependency>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <type/>

                            <classifier/>

                            <scope/>

                            <systemPath/>

                            <exclusions>

                            <exclusion>

                            <artifactId/>

                            <groupId/>

                            </exclusion>

                            </exclusions>

                            <optional/>

                            </dependency>

                            </dependencies>

                            </dependencyManagement>

                            <dependencies>

                            <dependency>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <type/>

                            <classifier/>

                            <scope/>

                            <systemPath/>

                            <exclusions>

                            <exclusion>

                            <artifactId/>

                            <groupId/>

                            </exclusion>

                            </exclusions>

                            <optional/>

                            </dependency>

                            </dependencies>

                           

                            <repositories>

                            <repository>

                            <releases>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </releases>

                            <snapshots>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </snapshots>

                            <id/>

                            <name/>

                            <url/>

                            <layout/>

                            </repository>

                            </repositories>

                            <pluginRepositories>

                            <pluginRepository>

                            <releases>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </releases>

                            <snapshots>

                            <enabled/>

                            <updatePolicy/>

                            <checksumPolicy/>

                            </snapshots>

                            <id/>

                            <name/>

                            <url/>

                            <layout/>

                            </pluginRepository>

                            </pluginRepositories>

                           

                            <reports/>

                            <reporting>

                            <excludeDefaults/>

                            <outputDirectory/>

                            <plugins>

                            <plugin>

                            <groupId/>

                            <artifactId/>

                            <version/>

                            <reportSets>

                            <reportSet>

                            <id/>

                            <reports/>

                            <inherited/>

                            <configuration/>

                            </reportSet>

                            </reportSets>

                            <inherited/>

                            <configuration/>

                            </plugin>

                            </plugins>

                            </reporting>

                   </profile>

         </profiles>

</project>

 

0 0
原创粉丝点击