如何在Maven的settings.xml中为HTTP和HTTPS配置代理服务器?
我在代理服务器后面使用Maven 3.1.1。 相同的代理处理HTTP
和HTTPS
流量。
我似乎无法告诉maven使用settings.xml
来使用这两种协议。 在我看来,只能使用一个活动代理,因为首先使用了定义的活动代理,并忽略后续的“活动”代理定义。 这是我的settings.xml
:
myhttpproxy true http 192.168.1.2 3128 localhost myhttpsproxy true https 192.168.1.2 3128 localhost
是否可以在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。 即便如此,我仍然需要在settings.xml
为Maven定义两个活动代理定义来指导这两种类型的流量。
来自settings.xml的Maven代理用于http和https,因此您只需要定义一个代理服务器并将其用于两者,您只需要留下一个proxy
标记,如下所示:
myhttpproxy true http 192.168.1.2 3128 localhost
上面的协议是代理服务器的协议,而不是代理请求。
它没有额外的...
条目 (如@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
)。 最重要的是:
每次settings.xml
更新后都必须重新启动Eclipse! : – /
我想这是一个bug或重载/缓存问题。 我们成功地测试了它
- 开普勒(4.3)和霓虹灯(4.6)
- 和他们的嵌入式Maven版本(3.2.1 / 3.3.9)以及外部3.3.3
- 使用
http://
和https://
URL
我解决了更新maven版本的问题,换句话说,不是使用嵌入式eclipse maven版本,而是使用外部版本3.3.9。
我使用Eclipse Maven进行的测试表明, settings.xml
中的protocol
是指代理服务器的协议,而不是URL请求的协议。 它还显示Maven仅使用列出的第一个活动代理服务器,并忽略其余部分。
这是我的证据:
文件说明了这一点
active :如果此代理处于活动状态,则为true。 这对于声明一组代理很有用,但一次只能有一个代理。
protocol ,host,port: 协议:// host:代理的端口 ,分隔成离散元素。“
2. 源代码更清晰:
/** * Get the protocol of the proxy server. * @return the protocol of the proxy server */ public String getProtocol() { return protocol; }
3.真实世界测试(使用Eclipse Maven):
一个。 第一个代理是一个虚假的ftp,第二个是真正的http,第三个是真正的https。 结果:失败。
如果协议是用于URL请求,那么Maven将查找真正的http / https代理并且工作得非常好。 相反,它使用第一个代理,即使它是“ftp”,并且失败了。
bogus_ftp true ftp 123 bogus.proxy.com real_http true http 123 real.proxy.com real_https true https 123 real.proxy.com
湾 第一个代理是真正的http,第二个是伪造的https。 结果:成功。
这表明它只使用了第一个代理。 否则,它会使用第二个代理进行https请求,点击伪代理服务器,然后失败。
real_http true http 123 real.proxy.com bogus_https true https 123 bogus.proxy.com
C。 两者都是http,但第一个代理是虚假的,第二个是真实的。 结果:失败。
这表明maven不使用多个代理,即使对于相同的协议也是如此。 否则,它会尝试第二个真正的代理并成功。
bogus_http true http 123 bogus.proxy.com real_http true http 123 real.proxy.com
我不太确定,但根据MNG-4394的文档,他们支持通配符。 所以你可以试试
http|https
要么
*
它可能会奏效。