我试图将 Maven 配置为在访问特定存储库时使用袜子代理,但不将其用于 Maven 中央存储库。
我用过export MAVEN_OPTS="-DsocksProxyHost=<proxyHost> -DsocksProxyPort=<proxyPort>"
最初设置代理,但随后得到Malformed reply from SOCKS server
当它尝试从 repo.maven.apache.org/maven2 下载依赖项时。
我还尝试将以下内容添加到 settings.xml,而不是$MAVEN_OPTS
:
<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 提供代理?
对于遇到这个问题的任何人,我会说另一种解决方法。
虽然看起来添加<proxy>
settings.xml 应该是最正确的解决方案,它对我不起作用。
首先,创建与代理服务器的 SSH 连接。您可以使用任何您喜欢的服务(例如 Shadowsocks),但这是最简单的解决方案:
ssh -D 9999 [email protected] /cdn-cgi/l/email-protection
这将启动到您的服务器的 ssh 会话,并在端口 9999 上启动 Socks 代理。如果您在使用 SSH 连接连接的服务器上执行此操作,您可能需要在下面运行此代码screen
会话,这样您就可以在袜子仍然在后台连接的情况下继续使用终端。
现在,当您想要构建工件时,可以使用以下命令:
-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"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)