1. 本地安装 Maven
首先确保本地已经配好了 Java 环境。
Maven 版本选择的时候注意与当前 IDEA 默认集成的 maven 版本一致,不然可能会有兼容性问题。
安装完毕后需要在 Path 中配置环境变量,不然其他地方不能直接使用 mvn 命令。
下载地址:maven.apache.org/download.cg...。直接下载对应的 ZIP 包即可。
接下来配一下环境变量。
在 Path 中添加%MAVEN_HOME%\bin
即可完成环境变量配置。
配完使用mvn -v
命令查看下版本号。
这样本地的 Maven 就安装完毕了,还是很简单的。
2. IDEA 配置 Maven
2.1. 默认配置
这里直接使用默认 IDEA 捆绑的 Maven 插件,默认资源库repository
在.m2
下:
C:\Users\wangbo\.m2\repository
默认的setting.xml
文件在 IDEA 的安装目录下的 plugin 目录下。
D:\JetBrains\IntelliJ IDEA Community Edition 2021.3\plugins\maven\lib\maven3\conf\settings.xml
一般需要修改下镜像什么的,我们可以修改在 IDEA 的安装目录下的 plugin 目录下的那个setting.xml
文件,同时也把自己安装的那个 Maven 的setting.xml
文件修改下,这样是为了防止在 IDEA 中直接使用 maven 和在 IDEA 中的终端使用 mvn 的设置出现差异。因为 Maven 安装完毕后我们在 Path 中配置了全局环境变量,所以终端中执行 mvn 命令的时候走的是你自己安装的那个本地 Maven。
D:\Maven\apache-maven-3.8.1\conf\settings.xml
配置下 Maven 镜像,这里配置为阿里云,地址:developer.aliyun.com/mvn/guide
xml
<!--默认是从maven官方仓库下载的,修改为阿里云私服,速度能快一点-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
2.2. Https 仓库配置
这里记录下配置最新阿里云 Maven 的 Https 仓库的方法:
首先在 Maven 的 setting.xml 里设置新版 HTTPS 的阿里云仓库。
xml
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
然后在 IDEA 中设置,忽略 HTTPS 的 SSL 证书验证就好了,注意是在Maven-->Importing-->VM options for importer
里添加
bash
-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
2.3. 其他配置
VM Options :这里设置运行 Maven 时的虚拟机参数。Maven 创建时,会联网下载模板文件,比较大,可以设置一个-DarchetypeCatalog=internal
,表示创建 Maven 项目的时候不会下载这个文件,能提高创建项目的速度。
JRE:执行运行 Maven 时的 JRE 版本。跟随项目 JDK 版本或者自己设置一个都行。
3. 常用 mvn 命令
3.1. 执行依赖分析
3.1.1. 命令介绍
执行依赖分析,可以查看项目完整的依赖树。
bash
mvn dependency:tree
查找 jar 包是由哪个依赖引入的
bash
mvn dependency:tree -Dverbose -Dincludes=要查询的内容
dependency:tree
:表示树状显示。-Dverbose
:表示可以显示所有的引用,包括因为多次引用重复而忽略的。-Dincludes
:可以制定查询条件
3.1.2. 使用示例
比如想要查找下图中的这个jakarta.validation-api-2.0.2.jar
是由pom.xml
中哪个配置引入的,可以这样做:
首先可以在上图中看出来该jar
包所对应pom.xml
配置的groupId
和artifactId
为jakarta.validation:jakarta.validation-api
,中间是冒号分隔的。所以我们要搜索的就是这个groupId
和artifactId
。直接将jakarta.validation:jakarta.validation-api
放到查询条件上,执行命令:
bash
mvn dependency:tree -Dverbose -Dincludes=jakarta.validation:jakarta.validation-api
执行结果如下图所示:
图中 3 是我们搜索的jar
包的groupId
和artifactId
,1 是找到的目标配置的groupId
,2 是找到的目标配置的artifactId
,我们可以直接拿着找到的这个groupId
和artifactId
直接到项目的pom.xml
去搜索,这样就直接找到对应的配置了,也就知道了这个jar
包是怎么引入的了。
综上,得出jakarta.validation-api-2.0.2.jar
是由下面的配置引入的:
xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
@[TOC]
3.2. 打包编译文件
有时我们会在src/main/java
目录下的相关包下添加xml
文件,一般是MyBatis
的xml
映射文件。
使用 IDEA 中 Maven 的compile
编译的时候,编译的target目录下并没有这些xml
文件,测试接口访问的时候会出现org.apache.ibatis.binding.BindingException
。同理,在package
打包的时候,在jar
包中也找不到这部分xml
文件。
所以在 IDEA 中需要在 Maven 项目的pom.xml
中进行配置resources
:
xml
<build>
<plugins>
<!--SpringBoot项目的打包编译插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<resources>
<!-- 将src/main/java下的xml资源编译到classes下 -->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<!-- 将src/main/resources下的资源编译到classes下 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>
3.3. 打包跳过测试
使用 Maven 打包的时候,可能会因为单元测试失败而导致打包失败,这时候就需要跳过单元测试。Maven 跳过单元测试有四种方法。
3.3.1. 命令行方式
我们可以用两种命令来跳过测试
bash
mvn clean install -DskipTests
skipTests
不执行测试用例,但会编译测试用例类生成的 class 文件到target/test-classes
下。即跳过单元测试,但是会继续编译测试类。
bash
mvn clean install -Dmaven.test.skip=true
maven.test.skip=true
不执行测试用例,也不编译测试用例类。即不但跳过单元测试的运行,也跳过测试代码的编译。
3.3.2. pom 配置
可以在pom.xml
中添加如下配置来跳过测试:
xml
<build>
<plugins>
<!-- maven 打包时跳过测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
<build>
如果是用的 SpringBoot 项目的spring-boot-maven-plugin
。
xml
<build>
<plugins>
<!--SpringBoot项目的打包编译插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
则只需要在properties
标签中添加skipTests
或者maven.test.skip
即可。
xml
<properties>
<skipTests>true</skipTests>
</properties>
或者
xml
<properties>
<maven.test.skip>true</maven.test.skip>
</properties>
3.3.3. IDEA 手动设置
Maven 命令栏的工具栏有个下图中的图标,这个图标就是Skip Tests
。点击选中,会发现test
按钮变灰色了,再使用Lifecycle
中的package
打包就会跳过测试。
3.3.4. IDEA 全局配置
直接在设置中配置 Maven 的VM Options
,添加上面提到的命令行的两个命令中的一个就行:
3.4. 打包发布命令
bash
#先clean,再打包发布到idc私服,-pl指定需要打包的模块,-P指定需要发布的目标私服ID
mvn clean deploy -pl data-search -Pidc
#先clean,再打包安装到本地maven仓库,-pl指定需要打包的模块。
mvn clean install -pl data-common
#先clean,再打包,并跳过测试,-pl指定需要打包的模块,
mvn clean package -pl data-govern -Dmaven.test.skip=true