プロキシサーバーの背後でMaven 3.1.1を使用しています。同じプロキシがHTTP
とHTTPS
の両方のトラフィックを処理します。
settings.xml
を使用して両方のプロトコルを使用するようにMavenに指示することはできません。最初に定義されたアクティブなプロキシが使用され、後続の「アクティブな」プロキシ定義は無視されるため、アクティブなプロキシは1つしか持てないように思えます。これは私のsettings.xml
です:
<proxies>
<proxy>
<id>myhttpproxy</id>
<active>true</active>
<protocol>http</protocol>
<Host>192.168.1.2</Host>
<port>3128</port>
<nonProxyHosts>localhost</nonProxyHosts>
</proxy>
<proxy>
<id>myhttpsproxy</id>
<active>true</active>
<protocol>https</protocol>
<Host>192.168.1.2</Host>
<port>3128</port>
<nonProxyHosts>localhost</nonProxyHosts>
</proxy>
</proxies>
Mavenのsettings.xml
のHTTP
とHTTPS
の両方にプロキシを設定することは可能ですか? Javaシステムプロパティを次のようなMaven呼び出しに渡すことでこれを回避できることを認識しています。
-Dhttps.proxyHost=192.168.1.2 -Dhttps.proxyPort=3128
しかし、これはsettings.xml
内から可能でなければなりませんか?
MNG-2305 や MNG-4394 などのMavenのバグは、この問題の解決を示唆していますが、私は確信していません。
または、Mavenをポイントできるローカルで実行できる「プロキシプロキシ」がありますか? 「プロキシプロキシ」は、それに応じてhttp/httpsをルーティングします。それでも、Mavenが両方のタイプのトラフィックを誘導するには、settings.xml
で2つのアクティブなプロキシ定義を定義する必要があります。
Settings.xmlのMavenプロキシはhttpとhttpsの両方に使用されるため、1つのプロキシサーバーを定義するだけで、両方に使用されます。次のように、1つのproxy
タグのみを残してください。
<proxies>
<proxy>
<id>myhttpproxy</id>
<active>true</active>
<protocol>http</protocol>
<Host>192.168.1.2</Host>
<port>3128</port>
<nonProxyHosts>localhost</nonProxyHosts>
</proxy>
</proxies>
上記のプロトコルは、プロキシされたリクエストではなく、プロキシサーバーのプロトコルです。
それなしで動作する余分な...<id>httpsproxy</id>...
エントリ(@KrzysztofKrasońが述べたように)そしてそれとともに(質問者が述べたように)。私たちにとっての問題は、 明らかにまったく機能しておらず、特定のことをテストするにはEclipse->Maven->User Settings->[x] Update Settings
Eclipse->Maven->[x] Download repository index updates on startup
をチェックする必要があります(例:Maven Repositories View->Global Repositories->central->Update Index
)。そして何よりも:
Eclipseはsettings.xml
更新ごとに再起動する必要があります!:-/
バグかリロード/キャッシュの問題だと思います。私たちはそれをうまくテストしました
http://
およびhttps://
URLEclipse Mavenを使用した私のテストでは、settings.xml
のprotocol
がRL要求のプロトコルではなく、プロキシサーバーのプロトコルを参照していることが示されています。 =。また、Mavenはリストされている最初のアクティブなプロキシサーバーのみを使用し、残りは無視することも示しています。
私の証拠は次のとおりです。
1。 ドキュメント は次のように述べています
active:このプロキシがアクティブな場合はtrue。これは、一連のプロキシを宣言するのに役立ちますが、一度にアクティブにできるのは1つだけです。
protocol、ホスト、ポート:protocol:// Host:port of the proxy、個別の要素に分かれています。」
2。 ソースコード はさらに明確です:
/**
* Get the protocol of the proxy server.
* @return the protocol of the proxy server
*/
public String getProtocol()
{
return protocol;
}
。実世界のテスト(Eclipse Mavenを使用):
a。 1番目のプロキシは偽のftp、2番目は実際のhttp、3番目は実際のhttpsです。結果:失敗。
プロトコルがURLリクエスト用である場合、Mavenは実際のhttp/httpsプロキシを検索し、完全に正常に機能します。代わりに、「ftp」であるにもかかわらず、最初のプロキシを使用し、失敗しました。
<proxies>
<proxy>
<id>bogus_ftp</id>
<active>true</active>
<protocol>ftp</protocol>
<port>123</port>
<Host>bogus.proxy.com</Host>
</proxy>
<proxy>
<id>real_http</id>
<active>true</active>
<protocol>http</protocol>
<port>123</port>
<Host>real.proxy.com</Host>
</proxy>
<proxy>
<id>real_https</id>
<active>true</active>
<protocol>https</protocol>
<port>123</port>
<Host>real.proxy.com</Host>
</proxy>
</proxies>
b。 1番目のプロキシは実際のhttpで、2番目のプロキシは偽のhttpsです。結果:成功。
これは、最初のプロキシのみを使用したことを示しています。そうでなければ、httpsリクエストに2番目のプロキシを使用し、偽のプロキシサーバーにヒットして失敗します。
<proxies>
<proxy>
<id>real_http</id>
<active>true</active>
<protocol>http</protocol>
<port>123</port>
<Host>real.proxy.com</Host>
</proxy>
<proxy>
<id>bogus_https</id>
<active>true</active>
<protocol>https</protocol>
<port>123</port>
<Host>bogus.proxy.com</Host>
</proxy>
</proxies>
c。両方ともhttpですが、1番目のプロキシは偽で、2番目のプロキシは本物です。結果:失敗。
これは、同じプロトコルであっても、Mavenが複数のプロキシを使用しないことを示しています。それ以外の場合、2番目の実際のプロキシを試して成功します。
<proxies>
<proxy>
<id>bogus_http</id>
<active>true</active>
<protocol>http</protocol>
<port>123</port>
<Host>bogus.proxy.com</Host>
</proxy>
<proxy>
<id>real_http</id>
<active>true</active>
<protocol>http</protocol>
<port>123</port>
<Host>real.proxy.com</Host>
</proxy>
</proxies>
Mavenバージョンの更新に関する問題を解決しました。つまり、組み込みEclipse Mavenバージョンを使用せず、外部バージョン3.3.9を使用しました。