美文网首页
2 Maven标签详解

2 Maven标签详解

作者: 笑Skr人啊 | 来源:发表于2020-03-17 23:30 被阅读0次
    <?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">
       <modelVersion>4.0.0</modelVersion>
    
       <!--
          1. 每个maven项目都有一个坐标
          2. groupId + artifactId + version + packaging + classifier,五个维度的坐标,任何项目都是用这五个维度唯一定位一个发布包
          3. packaging + classifier 通常不使用,基本使用groupId + artifactId + version三个维度定位依赖
      -->
    
    
       <!--
           1. 以公司或者组织的官网域名倒序开头 + 项目名
           2. 如百度,域名为baidu.com,公司里项目的开头,就可以用com.baidu来打头
           3. 百度做一个商城项目(mall),最终groupId,就是com.baidu.mall
       -->
       <groupId>com.baidu.mall</groupId>
    
       <!--
           1. 项目中的某个模块或服务名
           2. 如: 商城项目的订单模块
       -->
       <artifactId>mall-order</artifactId>
    
       <!--
           1. 项目版本号
           2. 第三位是最小版本,修复一些bug或代码微调,累加第三位版本号
           3. 第二位是小版本,加入一些新的功能模块或做一些重构,累加第二位版本号
           4. 第一位是大版本,整体架构有特别的升级或变化,累加第一位版本号
           5. SNAPSHOT,当前版本下的快照版本,代表代码正在开发或测试中,可试用,未经过完善测试,不保证其稳定性
           6. 如没有SNAPSHOT,说明已完善测试,是可发布的稳定版
    
           格式为:主版本.次版本.增量版本-限定版本号
       -->
       <version>1.2.0-SNAPSHOT</version>
    
       <!-- 工程的发布打包方式,一般常用jar/pom/war -->
       <packaging>pom</packaging>
    
       <!-- 项目用于展示的名称 -->
       <name>mall-order</name>
    
       <description>项目描述</description>
    
       <!--项目首页URL, Maven文档使用-->
       <url>http://www.baidu.com</url>
    
       <!--
           声明依赖,不实现引入
           1: 如果不在子项目中声明依赖,是不会从父项目中继承下来的
           2: 只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom
           3: 另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。
       -->
       <dependencyManagement>
    
           <!--即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)-->
           <dependencies>
    
               <dependency>
                   <groupId>org.projectlombok</groupId>
                   <artifactId>lombok</artifactId>
                   <version>1.18.0</version>
    
                   <!--
                       Maven项目不同阶段引入到classpath中依赖是不同的
                           编译:
                               将与编译相关的依赖引入classpath中
                           测试:
                               将与测试相关的的依赖引入到classpath中
                           运行:
                               将与运行相关的的依赖引入到classpath中
    
                           依赖范围控制依赖于这三种classpath的关系
                           依赖包的依赖范围决定依赖包在各个阶段是否发挥作用
    
                       依赖范围
                           compile :默认范围,编译、测试和运行的classpath都有效
                           provided:编译和测试时有效,运行无效
                               例: 当开发与测试时,需要将servlet-api引入使用,将项目放入tomcat运行时,因tomcat中提供该jar包,所以无需引入
                                   如果不指定该依赖范围且容器依赖的版本和maven依赖的版本不一致,可能会引起版本冲突
                           runtime: 测试和运行时有效,编译无效
                           test:    测试有效,例:Junit,打包时Junit不会被打包到发布包中,减少发布包的容量
                           system: 与provided效果一致,必须与systemPath同时使用(强烈不建议使用)
                               systemPath: 指定依赖文件的路径,此类依赖maven仓库不能解析,通常与本机系统绑定
                           import: 该依赖范围不会对三种classpath产生影响,该依赖范围只能与dependencyManagement元素配合使用,其功能为将目标pom文件中dependencyManagement的配置导入合并到当前pom的dependencyManagement中
                   -->
                   <scope>compile</scope>
    
                   <!--
                       optional:   当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用(默认:false,传递依赖)
                       例:
                           项目A 依赖 项目B ,项目B 依赖 项目C
    
                           项目B pom(依赖项目C),此时项目C不会向上传递,项目A不会依赖项目C
                       <dependency>
                           <groupId>com.gp6.C</groupId>
                           <artifactId>C</artifactId>
                           <version>0.0.1</version>
                           <optional>true</optional>
                       </dependency>
                   -->
                   <optional>true</optional>
               </dependency>
           </dependencies>
       </dependencyManagement>
    
    
       <!--扩展的远程仓库列表-->  
       <pluginRepositories>
               <pluginRepository>
                       <id>central</id>
               <name>Maven Plugin Repository</name>
               <url>http://repo1.maven.org/maven2</url>
               <layout>default</layout>
               <snapshots>
                       <enabled>false</enabled>
               </snapshots>
               <releases>
                     <updatePolicy>never</updatePolicy>
               </releases>
           </pluginRepository>
          </pluginRepositories>
    </project>
    

    相关文章

      网友评论

          本文标题:2 Maven标签详解

          本文链接:https://www.haomeiwen.com/subject/qtxfyhtx.html