使用 Maven 多年了,但是没有系统的看过相关资料,零零散散的看过些教程,自己凭感觉去使用,也踩了一些坑,现在好好理一下。
这是 maven 的默认生命周期,每一个阶段的命令会执行之前所有阶段的命令。
需要注意的是执行 mvn package 命令,最终的打包生成的格式是在 pom.xml 中指定的 <packaging>jar</packaging>
假如我现在要构建一个工程。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<!--子模块-->
<modules>
<module>provider-payment9002</module>
</modules>
<groupId>cn.caiqz</groupId>
<artifactId>cloud2020</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cloud2020</name>
<description>父工程</description>
<!-- packaging pom 总工程-->
<!--统一管理jar包版本-->
<properties>
<!--略-->
</properties>
<!--子模块继承之后,提供作用:锁定版本+子module不用写groupId和version-->
<dependencyManagement><!--定义规范,但不导入-->
<dependencies>
<!--spring boot 统一依赖管理-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud alibaba 统一依赖管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--spring cloud 统一依赖管理-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
这里说下spring-boot-dependencies
、spring-cloud-alibaba-dependencies
、spring-cloud-dependencies
是个什么东东。
先看这个,以前我们自己构建项目父工程时,会把spring boot starter作为父工程放入我们的父工程中。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
那如果我不止想引入Spring boot下的依赖,我还想引入Spring Cloud Alibaba全家桶中的组件呢?总不能再去继承一次吧!
所以可以引入相应dependencies来进行管理。
<?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">
<parent>
<artifactId>cloud2020</artifactId>
<groupId>cn.caiqz</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>provider-payment9002</artifactId>
<modelVersion>4.0.0</modelVersion>
<description>
子模块
</description>
<dependencies>
<!--引入nacos-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--引入spring boot web支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot的健康监控-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
</project>
-DarchetypeCatalog=internal
参数。<scope></scope>
<scope>provided</scope>
即可。