如何配置Maven仅从指定本地文件夹查找依赖?
配置不生效的核心原因
- 放在项目根目录的
settings.xml不会被Maven自动读取,默认Maven仅加载用户全局配置~/.m2/settings.xml和安装目录全局配置${MAVEN_HOME}/conf/settings.xml,项目级配置需要执行命令时显式指定。 - 仅禁用pom中定义的central仓库无法拦截全局配置中的其他仓库、镜像的请求,同时Maven默认会优先读取默认本地缓存
~/.m2/repository中的已有依赖,这就是指定目录为空时仍能构建成功的原因。
正确配置方案
步骤1:编写项目专用settings.xml
放在项目根目录,内容如下,所有路径替换为你存放依赖的本地目录的绝对路径:
<settings> <!-- 把本地缓存路径指定为你的依赖目录,避免读取默认的.m2缓存 --> <localRepository>/absolute/path/to/your/downloaded/repository</localRepository> <mirrors> <!-- 配置全局镜像,把所有仓库请求都转发到本地依赖目录,拦截所有外部请求 --> <mirror> <id>local-only-mirror</id> <mirrorOf>*</mirrorOf> <url>file:///absolute/path/to/your/downloaded/repository</url> </mirror> </mirrors> <profiles> <profile> <id>disable-all-external-repos</id> <activation> <activeByDefault>true</activeByDefault> </activation> <!-- 显式禁用所有远程仓库的下载权限 --> <repositories> <repository> <id>central</id> <url>http://repo1.maven.org/maven2</url> <releases><enabled>false</enabled></releases> <snapshots><enabled>false</enabled></snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://repo1.maven.org/maven2</url> <releases><enabled>false</enabled></releases> <snapshots><enabled>false</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>
步骤2:执行构建命令
运行命令时显式指定配置文件并开启离线模式,完全禁止网络请求:
mvn -s ./settings.xml -o package
-s ./settings.xml:指定使用项目根目录的专用配置,忽略全局settings配置-o:开启离线模式,只要指定的依赖目录缺少对应文件,直接构建失败,完全符合校验需求
可选:简化命令
如果不想每次执行都加参数,可以在项目根目录创建.mvn/maven.config文件,写入以下内容:
-s ./settings.xml -o
之后直接执行mvn package即可自动加载对应配置,和Gradle的使用体验一致。
内容的提问来源于stack exchange,提问作者user8681
相关产品推荐
相关产品推荐

