在代理后面运行SBT

问题描述 投票:0回答:2

我试图在企业代理后面运行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正确设置代理?

谢谢。

bash scala proxy sbt
2个回答
0
投票

据我所知,-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)中提供。


0
投票

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

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和您的其他代理之间的中间人。

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

问候,

埃德加

© www.soinside.com 2019 - 2024. All rights reserved.