gpt4 book ai didi

Maven 为特定的 repo 使用 SOCKS 代理

转载 作者:行者123 更新时间:2023-12-05 08:57:16 25 4
gpt4 key购买 nike

我正在尝试将 maven 配置为在访问特定存储库时使用 socks 代理,但不将其用于 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 作为协议(protocol)。但是,这会导致请求超时,因为它无法到达特定的存储库。然而,它确实到达了 repo.maven.apache.org/maven2,尽管它首先检查指定的存储库时速度很慢。

有没有办法将两者结合起来,并为我在 settings.xml 中指定的存储库提供 SOCKS 代理,而没有为 repo.maven.apache.org 提供代理?

最佳答案

对于遇到这个问题的任何人,我要说的是另一种解决方法。虽然它似乎在添加 <proxy>到 settings.xml 应该是最正确的解决方案,它对我不起作用。

首先,创建到您的代理服务器的 SSH 连接。您可以使用任何您喜欢的服务(例如 Shadowsocks),但这是最简单的解决方案:

ssh -D 9999 yourname@your.gateway.com

这会启动到您的服务器的 ssh session ,还会在端口 9999 上启动 Socks 代理。如果您在使用 SSH 连接的服务器上执行此操作,您可能希望在 screen 下运行此代码 session ,这样您就可以在 socks 仍在后台连接的情况下继续使用终端。

现在,当你想构建你的 Artifact 时,你可以使用这个:

-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"

关于Maven 为特定的 repo 使用 SOCKS 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com