在代理后面运行SBT

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在代理后面运行SBT相关的知识,希望对你有一定的参考价值。

我试图在企业代理后面运行SBT示例。

sbt new sbt/scala-seed.g8

我按照说明设置代理:

export   SBT_OPTS="$SBT_OPTS    -Dhttp.proxyHost=myusername:mypassword@correcthost  -Dhttp.proxyPort=correctport   -Dhttps.proxyHost=myusername:mypassword@correcthost -Dhttps.proxyPort=correctport"

显示的错误:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.scala-sbt.sbt-giter8-resolver#sbt-giter8-resolver_2.12;0.1.3: public: unable to get resource for org/scala-sbt/sbt-giter8-resolver#sbt-giter8-resolver_2.12;0.1.3: res=https://repo1.maven.org/maven2/org/scala-sbt/sbt-giter8-resolver/sbt-giter8-resolver_2.12/0.1.3/sbt-giter8-resolver_2.12-0.1.3.pom: java.net.UnknownHostException: myusername:mypassword@correcthost: invalid IPv6 address
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[error] java.lang.RuntimeException: Retrieval of org.scala-sbt.sbt-giter8-resolver:sbt-giter8-resolver:0.1.3 failed.

为什么抛出invalid IPv6 address错误? 如何为SBT正确设置代理?

谢谢。

答案

据我所知,-Dhttps.proxyHost=myusername:mypassword@correcthost不应该像那样格式化。相反,您在~/.profile中提供以下设置,您必须设置变量:

export SBT_OPTS="-Dhttp.proxyHost=${PROXY_HOST} -Dhttp.proxyPort=${PROXY_PORT} -Dhttps.proxyHost=${PROXY_HOST} -Dhttps.proxyPort=${PROXY_PORT} -Dhttp.proxyUser=$USER -Dhttp.proxyPassword=$PASS -Dhttps.proxyUser=$USER -Dhttps.proxyPassword=$PASS"

因此用户和密码在他们自己的设置覆盖(-Dhttps.proxyUser/Password)中提供。

另一答案

如果您使用需要身份验证的代理,我有一个解决方案:)

SBT很难处理需要身份验证的代理。如果您无法按需关闭代理(例如,公司代理),则解决方案是绕过此身份验证。为此,我建议您使用squid代理,并使用您的用户名和密码对其进行配置以访问您的公司代理。请参阅:https://doc.ubuntu-fr.org/squid然后,您可以设置JAVA_OPTS或SBT_OPTS环境变量,以便SBT连接到您自己的本地squid代理而不是您的公司代理:

export JAVA_OPTS = "-Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128"

(只是在你的bashrc中使用c / c而不修改任何东西,它应该工作正常)。

诀窍是Squid Proxy不需要任何身份验证,并充当SBT和您的其他代理之间的中间人。

如果您在应用此建议时遇到麻烦,请告诉我。

问候,

埃德加

以上是关于在代理后面运行SBT的主要内容,如果未能解决你的问题,请参考以下文章

如何从代理后面使用 sbt?

无法让 SBT 从 Artifactory Pro 公司代理后面下载自己

尝试从 Artifactory 虚拟存储库下载时,SBT 无法找到凭据

首次使用 SBT - 检索代理背后的依赖项问题

本地工件代理背后的 sbt

在代理服务器后面运行selenium