弱小システム屋が使う技術メモと他色々

主に自分用な技術メモが多くなる気がする。他色々が書かれるかどうかは不明。

Mavenリポジトリへproxy経由でアクセスする

Proxy通さないとインターネット接続できない環境。
Mavenリポジトリアクセスするための設定メモ。

概略

やりたいこと

社内ネットワークなどから外部サーバ接続にはproxyを通す必要がある。
そんな環境でCentralなMavenリポジトリにつなぐためにproxy通したい場合はどうするのって話。

動作環境

EclipseにくっついてきたMavenとm2e。
って一応書いたけど、この内容だと環境はあまり関係ない。

対応方法

settings.xmlにproxy設定を書いてやれば解決する。

設定例

<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
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <proxies>
    <proxy>
      <id>myproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
    </proxy>
  </proxies>
  ...
</settings>

設定例は公式*1のやつそのまま

設定値

id 被らないように適当な値を。
active 有効にするなら当然true…だけど一度に一つのproxyしか有効にならんと書いてある。
httpとhttps両方やりたい場合は面倒になるらしい。*2
protocol 繋ぎたいproxyに合わせて。httpやらhttpsやら。
host 同上。ローカルホストproxyなら127.0.0.1
port 同上。8080あたりになるんじゃない?
username/password 認証情報。パスワード直書きは気になるけどさすがにどうしようもないか。
nonProxyHosts proxyしたくないhostがある場合に設定。
Webページの説明ではデリミタはproxyサーバ依存とあるけど、xsdにdelimited by |って書いてあるのがイマイチ。

設定失敗してリポジトリアクセスできない場合のエラー

自環境ではMavenプロジェクトセットアップ時にこんなエラーが出た。

  • Failure to transfer org.apache.maven.plugins・・・
  • Plugin execution not covered by lifecycle configuration

当然動作環境によってエラー内容は変わるはず。
安易にエラーメッセージでGoogle先生に聞くと、リポジトリアクセスはできるがその先って問題が多い。
自分のはそれ以前の問題なので、そもそも最初の設定が終わってるかはちゃんと見ろよという戒め。