美文网首页
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