我试图在企业代理后面运行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和您的其他代理之间的中间人。
如果您在应用此建议时遇到麻烦,请告诉我。
问候,
埃德加