有时候基于公司安全因素考虑或者由于一些特殊原因,Maven 无法正常访问外部仓库来下载所需要的资源。这种情况下,可以通过为 Maven 配置 HTTP 代理来解决问题。
通过以下步骤来为 Maven 配置 HTTP 代理:
1 | - 获取 HTTP 代理信息 |
假设我们有如下 HTTP 代理信息:
1 | host: 9.30.123.123 |
下一步来寻找 Maven 配置文件。settimgs.xml
文件可能存在于两个位置:
– ~/.m2/settings.xml
– M2_HOME/conf/settings.xml
如果 ~/.m2/settings.xml
文件存在,则 优先
使用这个文件进行配置,如果不存在则需要使用 M2_HOME/conf/settings.xml
文件。如果没有配置 M2_HOME
这个环境变量或者忘记了 Maven 的安装位置,可以通过 mvn -version
可以找到 Maven home 目录,即上面提到的 M2_HOME
,在 Mac 下得到类似输出:
1 | mvn -version |
则 settimgs.xml
文件就在 /usr/local/Cellar/maven/3.3.9/libexec/conf
目录中。
编辑找到的 settings.xml 文件,搜索 proxies 关键字,找到类似下面的这一段:
1 | <proxies> |
在 proxies 下可以配置多个 proxy 元素,如果声明了多个 proxy 元素,则默认情况下第一个被激活的 proxy 元素会被使用。
当 proxy 元素里的 active 被设置为 true 时表示该 proxy 处于激活状态。
id 字段是 proxy 元素的一个标识
当代理不需要认证时,username 和 password 可以被注释掉
nonProxyHost 元素用来指定哪些主机名不需要代理,当有多个主机名不需要代理时用 | 来分隔主机名,主机名里支持通配符(如 *.google.com)。
了解了这段 XML 各元素的意义后将得到的 HTTP 代理信息依次填入相应元素:
1 | <proxies> |
保存 settings.xml
配置文件,Maven 配置 HTTP 代理完成。