Maven总结之Pom.xml解析(五)下篇

阿凡达2018-06-28 17:23

5.9 profile配置

    <!--在列的项目构建profile,如果被激活,会修改构建处理 -->  
<profiles>  

    <!--根据环境参数或命令行参数激活某个构建处理 -->  
    <profile>  
        <!--自动触发profile的条件逻辑。Activation是profile的开启钥匙。 -->  
        <activation>  

            <!--profile默认是否激活的标识 -->  
            <activeByDefault>false</activeByDefault>  

            <!--activation有一个内建的java版本检测,如果检测到jdk版本与期待的一样,profile被激活。 -->  
            <jdk>1.7</jdk>  

            <!--当匹配的操作系统属性被检测到,profile被激活。os元素可以定义一些操作系统相关的属性。 -->  
            <os>  

                <!--激活profile的操作系统的名字 -->  
                <name>Windows XP</name>  

                <!--激活profile的操作系统所属家族(如 'windows') -->  
                <family>Windows</family>  

                <!--激活profile的操作系统体系结构 -->  
                <arch>x86</arch>  

                <!--激活profile的操作系统版本 -->  
                <version>5.1.2600</version>  

            </os>  

            <!--如果Maven检测到某一个属性(其值可以在POM中通过${名称}引用),其拥有对应的名称和值,Profile就会被激活。 -->  
            <!-- 如果值字段是空的,那么存在属性名称字段就会激活profile,否则按区分大小写方式匹配属性值字段 -->  
            <property>  

                <!--激活profile的属性的名称 -->  
                <name>mavenVersion</name>  

                <!--激活profile的属性的值 -->  
                <value>2.0.3</value>  

            </property>  

            <!--提供一个文件名,通过检测该文件的存在或不存在来激活profile。missing检查文件是否存在,如果不存在则激活profile。 -->  
            <!--另一方面,exists则会检查文件是否存在,如果存在则激活profile。 -->  
            <file>  

                <!--如果指定的文件存在,则激活profile。 -->  
                <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</exists>  

                <!--如果指定的文件不存在,则激活profile。 -->  
                <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/</missing>  

            </file>  

        </activation>  
        <id />  
        <build />  
        <modules />  
        <repositories />  
        <pluginRepositories />  
        <dependencies />  
        <reporting />  
        <dependencyManagement />  
        <distributionManagement />  
        <properties />  
    </profile>

profile配置项在setting.xml中也有,是pom.xml中profile元素的裁剪版本,包含了id,activation, repositories, pluginRepositories和 properties元素。这里的profile元素只包含这五个子元素是因为setting.xml只关心构建系统这个整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。一个settings中的profile被激活,它的值会覆盖任何其它定义在POM中或者profile.xml中的带有相同id的profile

pom.xml中的profile可以看做pom.xml的副本,拥有与pom.xm**l相同的子元素与配置方法**。它包含可选的activation(profile的触发器)和一系列的changes。例如test过程可能会指向不同的数据库(相对最终的deployment)或者不同的dependencies或者不同的repositories,并且是根据不同的JDK来改变的。只需要其中一个成立就可以激活profile,如果第一个条件满足了,那么后面就不会在进行匹配。

5.10 报表配置

    <!--描述使用报表插件产生报表的规范,特定的maven 插件能输出相应的定制和配置报表. -->  
    <!--当用户执行“mvn site”,这些报表就会运行,在页面导航栏能看到所有报表的链接。 -->  
<reporting>  

    <!--true,则网站不包括默认的报表。这包括“项目信息”菜单中的报表。 -->  
    <excludeDefaults />  

    <!--所有产生的报表存放到哪里。默认值是${project.build.directory}/site。 -->  
    <outputDirectory />  

    <!--使用的报表插件和他们的配置。 -->  
    <plugins>  

        <plugin>  
            <groupId />  
            <artifactId />  
            <version />  
            <inherited />  
            <configuration>  
                <links>  
                    <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>  
                </links>  
            </configuration>  
            <!--一组报表的多重规范,每个规范可能有不同的配置。 -->  
            <!--一个规范(报表集)对应一个执行目标 。例如,有1,2,3,4,5,6,7,8,9个报表。 -->  
            <!--1,2,5构成A报表集,对应一个执行目标。2,5,8构成B报表集,对应另一个执行目标 -->  
            <reportSets>  

                <!--表示报表的一个集合,以及产生该集合的配置 -->  
                <reportSet>  

                    <!--报表集合的唯一标识符,POM继承时用到 -->  
                    <id>sunlink</id>  

                    <!--产生报表集合时,被使用的报表的配置 -->  
                    <configuration />  

                    <!--配置是否被继承到子POMs -->  
                    <inherited />  

                    <!--这个集合里使用到哪些报表 -->  
                    <reports>  
                        <report>javadoc</report>  
                    </reports>  

                </reportSet>  

            </reportSets>  

        </plugin>  

    </plugins>  

</reporting>

5.11 环境配置

    <!--项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL,本例为 jira -->  
    <issueManagement>  

        <!--问题管理系统(例如jira)的名字, -->  
        <system> jira </system>  

        <!--该项目使用的问题管理系统的URL -->  
        <url> http://jira.clf.com/</url>  

    </issueManagement>  

    <!--项目持续集成信息 -->  
    <ciManagement>  

        <!--持续集成系统的名字,例如continuum -->  
        <system />  

        <!--该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话)。 -->  
        <url />  

        <!--构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告) -->  
        <notifiers>  

            <!--配置一种方式,当构建中断时,以该方式通知用户/开发者 -->  
            <notifier>  

                <!--传送通知的途径 -->  
                <type />  

                <!--发生错误时是否通知 -->  
                <sendOnError />  

                <!--构建失败时是否通知 -->  
                <sendOnFailure />  

                <!--构建成功时是否通知 -->  
                <sendOnSuccess />  

                <!--发生警告时是否通知 -->  
                <sendOnWarning />  

                <!--不赞成使用。通知发送到哪里 -->  
                <address />  

                <!--扩展配置项 -->  
                <configuration />  

            </notifier>  

        </notifiers>  

    </ciManagement>

5.12 项目信息配置

    <!--项目的名称, Maven产生的文档用 -->  
    <name>banseon-maven </name>  

    <!--项目主页的URL, Maven产生的文档用 -->  
    <url>http://www.clf.com/ </url>  

    <!--项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时 -->  
    <!--(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签),不鼓励使用纯文本描述。 -->  
    <!-- 如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 -->  
    <description>A maven project to study maven. </description>  

    <!--描述了这个项目构建环境中的前提条件。 -->  
    <prerequisites>  

        <!--构建该项目或使用该插件所需要的Maven的最低版本 -->  
        <maven />  

    </prerequisites>  

    <!--项目创建年份,4位数字。当产生版权信息时需要使用这个值。 -->  
    <inceptionYear />  

    <!--项目相关邮件列表信息 -->  
    <mailingLists>  

        <!--该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 -->  
        <mailingList>  

            <!--邮件的名称 -->  
            <name> Demo </name>  

            <!--发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->  
            <post> clf@126.com</post>  

            <!--订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->  
            <subscribe> clf@126.com</subscribe>  

            <!--取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->  
            <unsubscribe> clf@126.com</unsubscribe>  

            <!--你可以浏览邮件信息的URL -->  
            <archive> http:/hi.clf.com/</archive>  

        </mailingList>  

    </mailingLists>  

    <!--项目开发者列表 -->  
    <developers>  

        <!--某个项目开发者的信息 -->  
        <developer>  

            <!--SCM里项目开发者的唯一标识符 -->  
            <id> HELLO WORLD </id>  

            <!--项目开发者的全名 -->  
            <name> banseon </name>  

            <!--项目开发者的email -->  
            <email> banseon@126.com</email>  

               <!--项目开发者的主页的URL -->  
            <url />  

            <!--项目开发者在项目中扮演的角色,角色元素描述了各种角色 -->  
            <roles>  
                <role> Project Manager</role>  
                <role>Architect </role>  
            </roles>  

            <!--项目开发者所属组织 -->  
            <organization> demo</organization>  

            <!--项目开发者所属组织的URL -->  
            <organizationUrl>http://hi.clf.com/ </organizationUrl>  

            <!--项目开发者属性,如即时消息如何处理等 -->  
            <properties>  
                <dept> No </dept>  
            </properties>  

            <!--项目开发者所在时区, -11到12范围内的整数。 -->  
            <timezone> -5</timezone>  

        </developer>  

    </developers>  

    <!--项目的其他贡献者列表 -->  
    <contributors>  

        <!--项目的其他贡献者。参见developers/developer元素 -->  
        <contributor>  
            <name />  
            <email />  
            <url />  
            <organization />  
            <organizationUrl />  
            <roles />  
            <timezone />  
            <properties />  
        </contributor>  

    </contributors>  

    <!--该元素描述了项目所有License列表。应该只列出该项目的license列表,不要列出依赖项目的license列表。 -->  
    <!--如果列出多个license,用户可以选择它们中的一个而不是接受所有license。 -->  
<licenses>  

        <!--描述了项目的license,用于生成项目的web站点的license页面,其他一些报表和validation也会用到该元素。 -->  
        <license>  

            <!--license用于法律上的名称 -->  
            <name> Apache 2 </name>  

            <!--官方的license正文页面的URL -->  
            <url>http://www.clf.com/LICENSE-2.0.txt </url>  

            <!--项目分发的主要方式: repo:可以从Maven库下载, manual: 用户必须手动下载和安装依赖 -->  
            <distribution> repo</distribution>  

            <!--关于license的补充信息 -->  
            <comments> Abusiness-friendly OSS license </comments>  

        </license>  

    </licenses>  

    <!--SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用。 -->  
    <scm>  

        <!--SCM的URL,该URL描述了版本库和如何连接到版本库。欲知详情,请看SCMs提供的URL格式和列表。该连接只读。 -->  
        <connection>scm:svn:http://svn.baidu.com/banseon/maven/</connection>  

        <!--给开发者使用的,类似connection元素。即该连接不仅仅只读 -->  
        <developerConnection>scm:svn:http://svn.baidu.com/banseon/maven/  
        </developerConnection>  

        <!--当前代码的标签,在开发阶段默认为HEAD -->  
        <tag />  

        <!--指向项目的可浏览SCM库(例如ViewVC或者Fisheye)的URL。 -->  
        <url> http://svn.baidu.com/banseon</url>  

    </scm>  

    <!--描述项目所属组织的各种属性。Maven产生的文档用 -->  
    <organization>  

        <!--组织的全名 -->  
        <name> demo </name>  

        <!--组织主页的URL -->  
        <url> http://www.clf.com/</url>  

    </organization>



Maven总结之Pom.xml解析(五)上篇

Maven总结之Pom.xml解析(五)中篇

本文来自网易实践者社区,经作者王志泳授权发布。