IntelliJ IDEA 中 Maven 的配置和使用

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配置的groupIdartifactIdjakarta.validation:jakarta.validation-api,中间是冒号分隔的。所以我们要搜索的就是这个groupIdartifactId。直接将jakarta.validation:jakarta.validation-api放到查询条件上,执行命令:

bash 复制代码
mvn dependency:tree -Dverbose -Dincludes=jakarta.validation:jakarta.validation-api

执行结果如下图所示:

图中 3 是我们搜索的jar包的groupIdartifactId,1 是找到的目标配置的groupId,2 是找到的目标配置的artifactId,我们可以直接拿着找到的这个groupIdartifactId直接到项目的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文件,一般是MyBatisxml映射文件。

使用 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
相关推荐
Daniel 大东6 分钟前
idea 解决缓存损坏问题
java·缓存·intellij-idea
wind瑞12 分钟前
IntelliJ IDEA插件开发-代码补全插件入门开发
java·ide·intellij-idea
HappyAcmen12 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
马剑威(威哥爱编程)18 分钟前
读写锁分离设计模式详解
java·设计模式·java-ee
鸽鸽程序猿18 分钟前
【算法】【优选算法】前缀和(上)
java·算法·前缀和
修道-032319 分钟前
【JAVA】二、设计模式之策略模式
java·设计模式·策略模式
九圣残炎24 分钟前
【从零开始的LeetCode-算法】2559. 统计范围内的元音字符串数
java·算法·leetcode
当归102437 分钟前
若依项目-结构解读
java
hlsd#1 小时前
关于 SpringBoot 时间处理的总结
java·spring boot·后端
iiiiiankor1 小时前
C/C++内存管理 | new的机制 | 重载自己的operator new
java·c语言·c++