タイトルの出オチ記事。これを知るためだけに4日くらい無駄にしました。参考先のブログに感謝です。
環境
- Maven
- 3.6.0
結論
Mavenでproxyを通す設定は、~/.m2/settings.xmlに設定する必要があります。
ただし、~/.m2/settings.xmlに複数定義できても、設定は1つしか有効にできません。そのため、~/.m2/settings.xmlにhttp, httpsの両方とも設定すると片方だけしか有効になりません。
settings.xmlのproxy設定
| 項目 | 設定内容 |
|---|---|
| id | 一意な値を設定する |
| active | settings.xmlで有効にしたいproxy設定。1つしか設定できない |
| protocol | httpまたはhttps |
| host | プロキシのIPやドメイン |
| port | プロキシのポート |
| username | プロキシへのログインユーザ名 |
| password | プロキシへのログインパスワード |
| nonProxyHosts | プロキシを通さないIPやドメイン |
具体的な例としては以下の通りです。
<settings>
<proxies>
<proxy>
<id>id01</id>
<!-- 1つだけしかActiveにできない -->
<active>false</active>
<protocol>http</protocol>
<host>proxy-domain</host>
<port>80</port>
<username>proxyUser</username>
<password>proxyPass</password>
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
<proxy>
<id>id02</id>
<active>true</active>
<protocol>https</protocol>
<host>proxy-domain</host>
<port>80</port>
<username>proxyUser</username>
<password>proxyPass</password>
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
</settings>
HTTPもHTTPSも有効にしたい
もしHTTP, HTTPSの両方ともproxy設定も有効にしたい場合は、環境変数のMAVEN_OPSにて、VMの起動オプションに設定する必要があるようです。(未検証)
# Windows set MAVEN_OPTS=-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port> # Mac/Linux export MAVEN_OPTS=-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>
終わりに
MavenのProxy設定する記事はたくさん見つかりましたが、1つしか設定できないという記事を見つけるのは大変でした。もし、HTTPSだけしか設定していなければここまで苦労しなかったですし、HTTPS, HTTPの順番で設定していたなら最初からうまく行っていたと思います。
proxy設定は難しいですね…。
この記事お役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。
参考
