java

Maven中pom文件所有属性解析

2019-08-28  本文已影响0人  岁月静好忄

Maven中pom.xml文件所有属性详细解析

<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">
 
    <!-- 父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对应值即为项目的默认值。坐标包括group ID,artifact ID和 version。 -->
    <parent>
        <!-- 被继承的父项目的构件标识符 -->
        <artifactId>com.xbz</artifactId>
        <!-- 被继承的父项目的全球唯一标识符 -->
        <groupId>parent</groupId>
        <!-- 被继承的父项目的版本 -->
        <version>1.0.0</version>
        <!--  父项目的pom.xml文件的相对路径。
        相对路径允许你选择一个不同的路径。
        默认值是../pom.xml。
        Maven首先在构建当前项目的地方寻找父项目的pom,
        其次在文件系统的这个位置(relativePath位置),
        然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
        <relativePath>../pom.xml</relativePath>
    </parent>
 
    <!-- 声明项目描述符遵循哪一个POM模型版本。
    模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,
    这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 -->
    <modelVersion>4.0.0</modelVersion>
    <!-- 项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。
    并且构建时生成的路径也是由此生成, 如com.mycompany.app生成的相对路径为:/com/mycompany/app -->
    <groupId>asia.banseon</groupId>
    <!--构件的标识符,它和group ID一起唯一标识一个构件。
    换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;
    在某个特定的group ID下,artifact ID也必须是唯一的。
    构件是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源码,二进制发布和WARs等。 -->
    <artifactId>banseon-maven2</artifactId>
    <!-- 项目产生的构件类型,例如jar, war, ear, pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 -->
    <packaging>jar</packaging>
    <!-- 项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
    <version>1.0-SNAPSHOT</version>
    <!-- 项目的名称, Maven产生的文档用 -->
    <name>banseon-maven</name>
    <!-- 项目主页的URL, Maven产生的文档用 -->
    <url>http://www.baidu.com/banseon</url>
    
    <!--  项目的详细描述, Maven 产生的文档用。  
    当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标 签), 
    不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 -->
    <description>A maven project to study maven.</description>
 
    <!-- 描述了这个项目构建环境中的前提条件。 -->
    <prerequisites>
        <!-- 构建该项目或使用该插件所需要的Maven的最低版本 -->
        <maven>2.0.3</maven>
    </prerequisites>
 
    <!-- 项目的问题管理系统(Bugzilla, Jira, Scarab,或任何你喜欢的问题管理系统)的名称和URL,本例为 jira -->
    <issueManagement>
        <!-- 问题管理系统(例如jira)的名字, -->
        <system>jira</system>
        <!-- 该项目使用的问题管理系统的URL -->
        <url>http://my.jira.com/banseon</url>
    </issueManagement>
 
    <!-- 项目持续集成信息 -->
    <ciManagement>
        <!-- 持续集成系统的名字,例如continuum -->
        <system></system>
        <!-- 该项目使用的持续集成系统的URL(如果持续集成系统有web接口的话)。 -->
        <url></url>
        <!-- 构建完成时,需要通知的开发者/用户的配置项。包括被通知者信息和通知条件(错误,失败,成功,警告) -->
        <notifiers>
            <!-- 配置一种方式,当构建中断时,以该方式通知用户/开发者 -->
            <notifier>
                <type></type><!-- 传送通知的途径 -->
                <sendOnError></sendOnError><!-- 发生错误时是否通知 -->
                <sendOnFailure></sendOnFailure><!-- 构建失败时是否通知 -->
                <sendOnSuccess></sendOnSuccess><!-- 构建成功时是否通知 -->
                <sendOnWarning></sendOnWarning><!-- 发生警告时是否通知 -->
                <address></address><!-- 不赞成使用。通知发送到哪里 -->
                <configuration></configuration><!-- 扩展配置项 -->
            </notifier>
        </notifiers>
    </ciManagement>
    <!-- 项目创建年份,4位数字。当产生版权信息时需要使用这个值。 -->
    <inceptionYear></inceptionYear>
 
    <!-- 项目相关邮件列表信息 -->
    <mailingLists>
        <!-- 该元素描述了项目相关的所有邮件列表。自动产生的网站引用这些信息。 -->
        <mailingList>
            <!-- 邮件的名称 -->
            <name>XMail</name>
            <!-- 发送邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
            <post>xingxbz@163.com</post>
            <!-- 订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
            <subscribe>xingxbz@163.com</subscribe>
            <!-- 取消订阅邮件的地址或链接,如果是邮件地址,创建文档时,mailto: 链接会被自动创建 -->
            <unsubscribe>xingxbz@163.com</unsubscribe>
            <!-- 你可以浏览邮件信息的URL -->
            <archive>http:/xingmail.com/demo/mail/</archive>
        </mailingList>
    </mailingLists>
 
    <!-- 项目开发者列表 -->
    <developers>
        <!-- 某个项目开发者的信息 -->
        <developer>
            <!-- SCM里项目开发者的唯一标识符 -->
            <id>DEV 001</id>
            <!-- 项目开发者的全名 -->
            <name>Xingbz</name>
            <!-- 项目开发者的email -->
            <email>xingxbz@163.com</email>
            <!-- 项目开发者的主页的URL -->
            <url>https://blog.csdn.net/xingbaozhen1210</url>
            <!-- 项目开发者在项目中扮演的角色,角色元素描述了各种角色 -->
            <roles>
                <role>Manager</role>
                <role>Test</role>
                <role>Dev</role>
            </roles>
            <!-- 项目开发者所属组织 -->
            <organization>xbz</organization>
            <!-- 项目开发者所属组织的URL -->
            <organizationUrl>https://blog.csdn.net/xingbaozhen1210</organizationUrl>
            <!-- 项目开发者属性,如即时消息如何处理等 -->
            <properties>
                <dept>No</dept>
            </properties>
            <!-- 项目开发者所在时区, -11到12范围内的整数。 -->
            <timezone>+8</timezone>
        </developer>
    </developers>
 
    <!-- 项目的其他贡献者列表 -->
    <contributors>
        <!-- 项目的其他贡献者。参见developers/developer元素 -->
        <contributor>
            <name></name>
            <email></email>
            <url></url>
            <organization></organization>
            <organizationUrl></organizationUrl>
            <roles></roles>
            <timezone></timezone>
            <properties></properties>
        </contributor>
    </contributors>
 
    <!-- 该元素描述了项目所有License列表。 
    应该只列出该项目的license列表,不要列出依赖项目的 license列表。
    如果列出多个license,用户可以选择它们中的一个而不是接受所有license。 -->
    <licenses>
        <!-- 描述了项目的license,用于生成项目的web站点的license页面,其他一些报表和validation也会用到该元素。 -->
        <license>
            <!-- license用于法律上的名称 -->
            <name>Xbz Projet</name>
            <!-- 官方的license正文页面的URL -->
            <url>https://blog.csdn.net/xingbaozhen1210</url>
            <!-- 项目分发的主要方式: repo,可以从Maven库下载 manual, 用户必须手动下载和安装依赖 -->
            <distribution>repo</distribution>
            <!-- 关于license的补充信息 -->
            <comments>ABCDEFG...</comments>
        </license>
    </licenses>

    <!-- SCM(Source Control Management)标签允许你配置你的代码库,供Maven web站点和其它插件使用。 -->
    <scm>
        <!-- SCM的URL,该URL描述了版本库和如何连接到版本库。欲知详情,请看SCMs提供的URL格式和列表。该连接只读。 -->
        <connection>scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk)</connection>
        <!-- 给开发者使用的,类似connection元素。即该连接不仅仅只读 -->
        <developerConnection>scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk</developerConnection>
        <!-- 当前代码的标签,在开发阶段默认为HEAD -->
        <tag></tag>
        <!-- 指向项目的可浏览SCM库(例如ViewVC或者Fisheye)的URL。 -->
        <url>http://svn.baidu.com/banseon</url>
    </scm>

    <!-- 项目分发信息,在执行mvn deploy后表示要发布的位置。有了这些信息就可以把网站部署到远程服务器或者把构件部署到远程仓库。 -->
    <distributionManagement>
        <!-- 部署项目产生的构件到远程仓库需要的信息 -->
        <repository>
            <!-- 是分配给快照一个唯一的版本号(由时间戳和构建流水号)?还是每次都使用相同的版本号?参见repositories/repository元素 -->
            <uniqueVersion></uniqueVersion>
            <id>banseon-maven2</id>
            <name>banseon maven2</name>
            <url>file://${basedir}/target/deploy</url>
            <layout></layout>
        </repository>
        <!-- 构件的快照部署到哪里?如果没有配置该元素,默认部署到repository元素配置的仓库,参见distributionManagement/repository元素 -->
        <snapshotRepository>
            <uniqueVersion></uniqueVersion>
            <id>banseon-maven2</id>
            <name>Banseon-maven2 Snapshot Repository</name>
            <url>scp://svn.baidu.com/banseon:/usr/local/maven-snapshot</url>
            <layout></layout>
        </snapshotRepository>

        <!-- 部署项目的网站需要的信息 -->
        <site>
            <!-- 部署位置的唯一标识符,用来匹配站点和settings.xml文件里的配置 -->
            <id>banseon-site</id>
            <!-- 部署位置的名称 -->
            <name>business api website</name>
            <!-- 部署位置的URL,按protocol://hostname/path形式 -->
            <url>scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web</url>
        </site>
        <!-- 项目下载页面的URL。如果没有该元素,用户应该参考主页。使用该元素的原因是:帮助定位那些不在仓库里的构件(由于license限制)。 -->
        <downloadUrl></downloadUrl>

        <!-- 如果构件有了新的group ID和artifact ID(构件移到了新的位置),这里列出构件的重定位信息。 -->
        <relocation>
            <!-- 构件新的group ID -->
            <groupId></groupId>
            <!-- 构件新的artifact ID -->
            <artifactId></artifactId>
            <!-- 构件新的版本号 -->
            <version></version>
            <!-- 显示给用户的,关于移动的额外信息,例如原因。 -->
            <message></message>
        </relocation>
        <!--  给出该构件在远程仓库的状态。
        不得在本地项目中设置该元素,因为这是工具自动更新的。
        有效的值有:
        none(默认),converted(仓库管理员从 Maven 1 POM转换过来),
        partner(直接从伙伴Maven 2仓库同步过来),deployed(从Maven 2实例部 署),verified(被核实时正确的和最终的)。 -->
        <status></status>
    </distributionManagement>

    <!-- 以值替代名称,Properties可以在整个POM中使用,也可以作为触发条件(见settings.xml配置文件里activation元素的说明)。格式是<name>value</name>。 -->
    <properties>
        <version1>1.0</version1>
        <version2>2.0</version2>
    </properties>
</project>


上一篇 下一篇

猜你喜欢

热点阅读