Maven是流行的build(构建)工具。IDEA中的Maven设置在菜单“Settings”-“Build, Excution, Deployment”-“Build Tools”-“Maven”
IDEA中Maven的设置非常重要,弄不好所有项目都无法编译、构建。
一、环境简介
操作系统:Windows 11 家庭版 22H2
JDK:OpenJDK Temurin 17.0.8.7,路径C:\java\jdk-17.0.8.7-hotspot
IntelliJ IDEA:社区版Community Edition 2023.2.1
IDEA内置绑定Maven:3.9.2
独立安装Maven:3.9.4,路径C:\java\apache-maven-3.9.4
必须知道的Maven库网站:https://mvnrepository.com/,可查询依赖包,点击相应版本就可以看到引用格式,拷贝粘贴到 pom.xml 即可。
二、IDEA中的设置与settings.xml
1、IDEA中的Maven基本不需要设置,默认就可以正常工作。默认的Maven本地库路径是本地用户路径下C:\Users\xxx\.m2\repository。如果希望更改本地库路径,并且引入国内的Maven库镜像,就需要用到配置文件settings.xml了。
2、文件settings.xml可以放在任意路径下,本例放在C:\java路径下。
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 定义本地 Maven 本地仓库地址 -->
<localRepository>C:\java\mvn-repository</localRepository>
<mirrors>
<!-- 定义阿里云 Maven 镜像地址 -->
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>aliyun maven public</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
</mirrors>
<!-- 阿里云的Spring仓库-->
<profiles>
<profile>
<id>aliyunSpring</id>
<repositories>
<repository>
<id>spring</id>
<url>https://maven.aliyun.com/repository/spring</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>spring-plugin</id>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<!-- 手动激活profiles的列表,按照profile被应用的顺序定义activeProfile。 -->
<!-- 该元素包含了一组activeProfile元素,每个activeProfile都含有一个profile id。 -->
<!-- 任何在activeProfile中定义的profile id,不论环境设置如何,其对应的 profile都会被激活。 -->
<!-- 如果没有匹配的profile,则什么都不会发生。 -->
<!-- 如果运行过程中找不到这样一个profile,Maven则会像往常一样运行。 -->
<activeProfiles>
<activeProfile>aliyunSpring</activeProfile>
</activeProfiles>
</settings>
注意:
(1)可以看到在<localRepository>中定义了本地Maven库的路径。
(2)阿里云公共代理库官方文档(https://help.aliyun.com/document_detail/102512.html),上面xml中的mirror部分的内容一定要参考官方文档,不能盲目照搬网上的帖子。
(3)上面xml中的Spring仓库的部分,阿里云文档给出的样例只有<repository>包围的部分。注意<repository>一定要放到<profiles><profile><repositories>下。
(4)沉重的教训:上面xml中不要保留空的标签,如<updatePolicy />,以前一直OK,突然有一次IDEA更新之后,报 illegal policy 的错,所有项目不能编译。
3、在IDEA中引入settings.xml

(1)上图第一行可以看到IDEA正在使用的是内置绑定的Maven,如果有独立安装的Maven可以在这里切换。
(2)在User settings file这里,先勾选Override,然后点小文件夹图标找到settings.xml引入,然后下面的Local repository就变更为自己定义的本地库路径了。
(3)所以Local repository这里不需要手动修改,除非你还想把本地库路径变更为不同于settings.xml里的定义(或者settings.xml里没有定义本地库路径)。勾选Override,然后点小文件夹图标找到你指定的本地库路径。
(4)是否勾选maven.config暂时无所谓,一般情况下这个文件并不存在。
三、独立安装Maven
按照上面设置,Maven就可以正常工作,没有独立安装Maven的必要性。
某次更新IDEA后,Maven编译任何项目总会 warning: plugin validation issues were detected,后来证明是IDEA内置的Maven版本不够新,使用独立安装的Maven最新版之后就没有这个警告了。完全出于强迫症,其实不理会这个警告就OK了,等什么时候IDEA更新顺便升级内置Maven就没有这个问题了。
独立安装Maven很容易,下载zip包解压到你指定目录就完事了。
独立安装Maven需要注意的事项:一定要设置系统变量。
设置JDK系统变量是Maven的需要,因为编译Java代码归根结底是javac,独立安装的Maven不会从IDEA环境中获得JDK的信息。
设置Maven系统变量是IDEA编译和构建时使用到了mvn的命令行。
设置“系统变量”还是“用户变量”,建议“系统变量”,对所有用户生效。
(1)设置JAVA_HOME和MAVEN_HOME,分别指向安装路径。
(2)在Path变量里增加JDK和Maven的bin路径。
(3)变量CLASSPATH暂时没有必要,设置也可,内容为一个英文句号“.”,表示当前目录。今后有如有需要再增加内容。
(4)系统变量设置成功测试,在命令行任何路径下都可执行java -version和mvn -version

最后,就可以到IDEA里切换为独立安装的Maven了,其他设置都不用动。
四、java file is located outside of source root
这个问题其实跟Maven没关系,但经常出现在编译、运行的时候。
当(1)Project右键New…,或者(2)菜单Project Structure右边“+”,new module,目录结构也生成了,示例代码也生成了,但是想运行代码的时候就会跳出错误“java file is located outside of source root”,并且Maven也不能自动载入依赖包并构建。
解决方法:打开Project Structure,右边“+”选 import module,从弹出窗口选中刚才新建的module对应的目录,OK。
这是IDEA的一个bug吧?不仅出现在Community Edition也出现在Ultimate版。




留下评论