<?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>
网友评论