目录
一、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>