2 Maven标签详解

<?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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容