今日もプログラミング

IT技術とかプログラミングのこととか特にJavaを中心に書いていきます

M2Eclipseのプロキシ設定?

会社でインターネットに接続するにはプロキシを経由しなくてはいけない(だいたいどこのSIerもそうかな?)。

でも開発ツールにはプロキシ設定ができなかったり不便だったりするのがあって結構困る。

以前Mavenを使おうとした時も苦労したが、最近改めてチャレンジしてみた。

 

プロキシの設定自体は、settings.xmlに書ける。ただ、パスワードを平文でそのまま書くのでちょっと気持ち悪い…。ともかく、コマンドラインはこれでOK。

 

M2Eclipseで使うときも、この設定ファイルが使われるはず。

でも、「ウィンドウ」→「設定」→「Maven/アーキタイプ」のところで、リモート・カタログを検証しても失敗してしまう…。

プロキシを経由しないでインターネットに接続できる環境だと、成功するのだが。

 

怪しいと思って、Eclipseのデバッガで覗いてみた。

「検証」ボタンを押すと、

org.eclipse.m2e.core.ui.internal.preferences.RemoteArchetypeCatalogDialogのverifyButton
(org.eclipse.m2e.core.ui_xxx.jar)

org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory.RemoteCatalogFactoryのgetArchetypeCatalogメソッド
(org.eclipse.m2e.core_xxx.jar)

org.apache.maven.archetype.DefaultArchetypeのgetRemoteCatalog(String)メソッド
(archetype-common-xxx.jar)

org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSourceのgetArchetypeCatalogメソッド

org.apache.maven.wagon.StreamWagonのgetメソッド
(wagon-provider-api-xxx.jar)

org.apache.maven.wagon.StreamWagonのgetIfNewerメソッド

org.apache.maven.wagon.StreamWagonのgetInputStreamメソッド

io.tesla.aether.wagon.OkHttpWagonのfillInputDataメソッド
(aether-connector-okhttp-xxx.jar)

io.tesla.aether.okhttp.OkHttpAetherClientのgetメソッド

io.tesla.aether.okhttp.OkHttpAetherClientのauthenticateメソッド

のように呼ばれる。ここでインスタンス変数config.proxyを確認すると、nullになっていた。

 

Wagon.getの前にはWagon.connect(Repository)が呼ばれている(実装はAbstractWagon)。
ここから更にconnect(Repository, AuthenticationInfo, ProxyInfoProvider)が呼ばれるが、後ろの2つの引数はnullである。
この中でopenConnectionが呼ばれ、更にOkHttpWagon.openConnectionInternalが呼ばれる。
ここでOkHttpAetherClientのインスタンスを生成する際にプロキシ情報を渡すが、上にあるようにnullである。

 

結局、「検証」ボタンのところはプロキシに対応していないということなのかな?

 

Eclipse : 4.4

M2Eclipse : 1.5.0.20140605-2032