我正在尝试将maven配置为在访问特定存储库时使用socks代理,而不是将其用于maven中央存储库。
我最初使用export MAVEN_OPTS="-DsocksProxyHost=<proxyHost> -DsocksProxyPort=<proxyPort>"来设置代理,但是当它尝试从repo.maven.apache.org/maven2下载依赖项时获得Malformed reply from SOCKS server。
我还尝试将以下代码而不是$MAVEN_OPTS添加到settings.xml中
<proxies>
<proxy>
<active>true</active>
<protocol>http</protocol>
<host><proxyHost></host>
<port><proxyPort></port>
<nonProxyHosts>repo.maven.apache.org</nonProxyHosts>
</proxy>
</proxies>并且还使用SOCKS作为协议。但是,这会导致请求超时,因为它无法到达特定的存储库。然而,它确实到达了repo.maven.apache.org/maven2,尽管速度很慢,因为它首先检查指定的存储库。
有没有办法将这两种方法结合起来,并为我在settings.xml中指定的存储库使用SOCKS代理,而不使用repo.maven.apache.org代理?
发布于 2019-03-15 16:50:46
对于任何正在努力解决这个问题的人,我要说的是另一种解决它的方法。虽然将<proxy>添加到settings.xml似乎应该是最正确的解决方案,但它对我并不起作用。
首先,创建到代理服务器的SSH连接。你可以使用任何你喜欢的服务(例如Shadowsocks),但这是最简单的解决方案:
ssh -D 9999 yourname@your.gateway.com
这将启动到服务器的ssh会话,并在端口9999上启动Socks代理。如果您正在使用SSH连接连接到的服务器上执行此操作,则可能需要在screen会话下运行此代码,以便在socks仍然在后台连接的情况下继续使用终端。
现在,当您想要构建您的工件时,您可以使用以下代码:
-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=9999
这行代码使用本地端口9999上的Socks连接到您的服务器。示例:
mvn clean install -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8085
此外,您还可以将其导出到您的环境中:
export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8085"
发布于 2016-11-09 19:16:20
您应该将协议设置为socks5,如下所示(我的设置):
<proxy>
<id>ss</id>
<active>true</active>
<protocol>socks5</protocol>
<username></username>
<password></password>
<host>127.0.0.1</host>
<port>1080</port>
<nonProxyHosts>127.0.0.1</nonProxyHosts>
</proxy>发布于 2020-10-31 13:07:58
我知道现在有点晚了,但对于仍然有这个问题的人来说。这是使用socks代理调用maven的方法:
mvn install -DproxySet=true -DsocksProxyHost=YOUR_SOCKS_SERVER -DsocksProxyPort=SOCKS_PORThttps://stackoverflow.com/questions/34267443
复制相似问题