目录
一、Maven
1.1、 基础语法
1.2、聚合
1.3、继承
1.4、自定义属性
一、Maven
1.1、 基础语法
<?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 模型版本--><modelVersion>4.0.0</modelVersion><!--组织 id--><groupId>cn.itcast.demo</groupId><!--项目id--><artifactId>cloud-demo</artifactId><!--版本号: release(发行版本) snapshot(开发版本)--><version>1.0</version><!--设置当前工程的所有依赖--><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version></dependency></dependencies><!--构件--><build><!--设置插件--><plugins><!--具体的插件配置--><plugin></plugin></plugins></build>
a)坐标,Maven 中用于描述仓库资源的位置,如下构成:
- groupId:定义当前 Maven 项目组织名称,例如 com.mysql
- artifactId:定义当前 Maven 项目名称(通常时模块名称,例如 mysql-connector-java )
- version:定义当前项目的版本号.
b)依赖配置 dependencies,依赖当前项目运行所需的 jar 包,一个项目可以设置多个依赖dependency.
如果想要主动断开依赖资源(例如一个依赖的内部又连接了其他依赖),就可以使用 exclusion 来排除(要排除的依赖无需指定版本号).
<dependency><groupId>cn.itcast.demo</groupId><artifactId>feign-api</artifactId><version>1.0</version><exclusions><exclusion><groupId>cn.itcast.demo</groupId><artifactId>feign-api</artifactId></exclusion></exclusions></dependency>
c)版本:
SNAPSHOT(快照版本):就是一个测试阶段的版本,会随着开发的进行不断更新.
RELEASE(发布版本): 项目开发到一个稳定的版本,即使进行功能的后续开发,也不会改变当前发布版本内容,这种版本就是发布版本.
1.2、聚合
概念:使用一个“总工程”(一般是父工程)将各个“模块工程”(一般是子工程)汇集起来,作为一个整体对应完整的项目。
好处:
- 一键执行 Maven 命令:很多构建命令都可以在“总工程”中一键执行
- 配置聚合之后,各个模块工程会在总工程中展示一个列表,让项目中的各个模块一目了然.
Ps:微服务项目中体现的淋漓尽致
使用方式如下:
a)在父工程中的 pom.xml 文件中,定义打包类型为 pom.
<packaging>pom</packaging>
b)定义当前模块进行构件时关联的其他模块名称.
<modules><module>user-service</module><module>order-service</module><module>eureka-server</module><module>feign-api</module><module>gateway</module></modules>
Ps:参与聚合的模块最终的执行顺序和模块间的依赖关系有关,与配置顺序无关.
1.3、继承
概念:A 模块(子工程)继承 B 模块(父工程),本质上就是 A 模块中的 pom.xml 文件继承了 B 模块的 pom.xml 文件.
好处:在每一个 module 中各自维护各自的依赖容易发生出入,不易管理,比如在父工程管理的所有模块中,他们因该使用通过一版本的 jar 包,却由于各自管理,容易出现出入. 因此我们可以在父工程中通过 <dependencyManagement> 标签定义好依赖规范,让这些子工程去继承他,这样,子工程再引入依赖时就无需指定版本号(会通过父工程管理依赖寻找所需版本).
使用方式如下:
a)在父工程中定义依赖管理.
<dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.5.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
Ps:dependencyManagement 只是声明了依赖,并没有真正引入.
b)在子工程中声明父工程坐标与对应的位置
<parent><artifactId>cloud-demo</artifactId><groupId>cn.itcast.demo</groupId><version>1.0</version><!--父工程的 pom 文件--><relativePath>../pom.xml</relativePath></parent>
c)在子工程引入依赖,版本参照父工程的依赖,因此无需指定版本.
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
1.4、自定义属性
自定义属性,一般是为了统一管理依赖的版本号. 这就等同于定义变量,方便统一维护.
使用方式如下:
a)定义格式
<properties><自定义名称>指定版本</自定义名称></properties>
<properties><mysql.version>5.1.47</mysql.version><mybatis.version>2.1.1</mybatis.version></properties>
b)调用格式
<dependencies><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.version}</version></dependency></dependencies>