pom文件详解

pom:
    POM是项目对象模型(Project Object Model)的简称
    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件;
    而pom.xml主要描述了项目的maven坐标,该文件用于管理:源代码、配置文件、开发者的信
    息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。是项目级别的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<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">
    
    //pom版本标签
    //必须标签,表示是一个固定的版本,指定了当前pom的版本
    <modelVersion>4.0.0</modelVersion>
    
    //坐标信息标签    <基础设置>
    //公司或者组织的唯一标志,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成,
      如x.xx.xxx生成的相对路径为:/x/xx/xxx/
    <groupId>x.xx.xxx</groupId>
    //本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的;
    <artifactId>项目名</artifactId>
    //打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar;
    <packaging>pom</packaging>
    //项目当前的版本号
    <version>1.0.0</version>
    //
    <inceptionYear>2018-Now</inceptionYear>
    //另起一个项目名展示给用户
    <name>maven</name>
    //项目主页的URL, Maven产生的文档用  
    <url>http://www.baidu.com/banseon</url>    
    //项目的详细描述, Maven 产生的文档用。
    <description>A maven project to study maven.</description>
    
    //父项目标签
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        //父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。
        默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项目的pom,
        其次在文件系统的这个位置(relativePath位置),然后在本地仓库,
        最后在远程仓库寻找父项目的pom。
        <relativePath />
    </parent>
    
    //为pom定义一些常量,在pom中的其它地方可以直接引用
    <properties>
        //java版本
        <java.version>1.8</java.version>
        <maven.test.skip>true</maven.test.skip>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <eclipse-plugin-download-sources>false</eclipse-plugin-download-sources>
        <eclipse-plugin-download-javadocs>false</eclipse-plugin-download-javadocs>

        <main.basedir>${basedir}</main.basedir>

        <spring-cloud-dependencies.version>Finchley.RELEASE</spring-cloud-dependencies.version>
        //自定义标签    引用时使用${gjyf-dependencies.version}
        <gjyf-dependencies.version>2.0.0-SNAPSHOT</gjyf-dependencies.version>
    </properties>
    
    //定义本项目的依赖关系  
    //继承自该项目的所有子项目的默认依赖信息。这部分的依赖信息不会被立即解析,它并不会被运行,就是不会营造实际的依赖,
      主要用于父模块中定义供子模块使用,而当子项目声明一个依赖(必须描述group ID和artifact ID信息),
      如果group ID和artifact ID以外的一些信息没有描述,则通过
      group ID和artifact ID匹配到这里的依赖,并使用这里的依赖信息。
    <dependencyManagement>
        <dependencies>
            //参见dependencies/dependency元素
            <dependency>
                eg:
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                //标签内为test时表示该项依赖(这个jar)只能在test时起到作用,打包编译发布后不起作用
                //scope属性值:
                    //compile:默认的范围,在编译测试,运行都有效,在依赖项dependency中不写,也就是不指定scope标签,即表示默认;
                    //provided:在编译和测试的时候有效
                    //runtime:在测试和运行时有效
                    //test:只在测试范围内有效
                    //system:在编译和测试是有效,与本机系统相关联,可移植性差
                    //improt:导入的依赖范围,它只使用在dependencyManagement中,表示从其它的pom中导入dependency的配置。
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
    //构建配置
    <build>
        //项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里.
        <resources>  
            <resource>
                //描述存放资源的目录,该路径相对POM路径
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                //描述存放资源的目录,该路径相对POM路径
                <directory>src/main/java</directory>
                //包含的模式列表
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        <resources/>
        
        //使用的插件列表.
        <plugins>  
            //描述插件所需要的信息。
            <plugin>  
                //插件在仓库里的group ID
                <groupId>  </groupId>
                //插件在仓库里的artifact ID
                <artifactId>   </artifactId>
                //被使用的插件的版本(或版本范围)
                <version>   </version>
            <plugin/>
        <plugins>
    <build/>
    
    
    
    //模块(有时称作子项目) 被构建成项目的一部分。列出的每个模块元素是指向该模块的目录的相对路径
        <modules>
            <!--子项目相对路径-->
            <module></module>
        </modules>

posted @ 2019-09-26 14:39  MrYangSX  阅读(7326)  评论(0编辑  收藏  举报