タイトルの出オチ記事。これを知るためだけに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でのシェアや、今後も情報発信しますのでフォローよろしくお願いします。
参考