为了账号安全,请及时绑定邮箱和手机立即绑定

如何从代理后面使用sbt?

/ 猿问

如何从代理后面使用sbt?

FFIVE 2019-08-26 15:54:14

如何从代理后面使用sbt?

如何配置sbt以使用代理?

例如,我的生成定义需要连接到GitHub上,用于指定连接参数http.proxyhttp.proxyPortuser,和password

我如何将这些设置传递给sbt?

当我在家工作时,是否有一种简单的方法可以在代理/无代理设置之间切换?


查看完整描述

3 回答

?
守着一只汪

sbt 尊重http代理设置的常用环境变量:

export JAVA_OPTS="$JAVA_OPTS -Dhttp.proxyHost=yourserver -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password"

当然,假设是Unix(Linux / OSX等)。在Windows上你可以%JAVA_OPTS%像往常一样在Windows中设置相同的环境变量()。

然后sbt像往常一样运行:

sbt

在代理/无代理之间切换应该是设置一个小脚本,你可以随时“啜饮”它。

陷阱

  • 不要在yourserver值中包含“http://”

  • 不要在yourserver值中包含端口

  • 你可能也想要包括https.proxyHosthttps.proxyPort因为很多东西都适用于https

  • 如果您的代理需要身份验证,除非它只使用基本身份验证,否则请不要尝试,因为SBT不支持其他任何操作。还要注意清除环境变量的短信凭证!请务必使用不会创建跟踪文件的文本编辑方法从.bash_history中删除命令(技术上您应该shredsrm整个文件)。如果您使用的是Windows,请不要担心,您的安全性已经搞砸了,您不能再做任何伤害。


查看完整回答
反对 回复 2019-08-26
?
慕瓜9086354

sbt 与通常配置其他基于JVM的项目的方式相比,它以相当标准的方式工作。

sbt实际上是两个“子系统” - 发射器和核心。通常xsbt.boot.Boot在核心启动之前执行我们都知道的功能(有些甚至更喜欢)。

因此,您应该如何执行sbt,说明如何为HTTP,HTTPS和FTP网络流量设置代理。

以下是可以为任何Java应用程序设置的可用属性的完整列表,包括指示Java API通过代理路由通信的sbt:

  • HTTP_PROXY

  • http_proxy_user

  • http_proxy_pass

  • http.proxyHost

  • 把http.proxyPort

  • http.proxyUser

  • http.proxyPassword

http以上替换为httpsftp获取服务的属性列表。

某些sbt脚本用于JAVA_OPTS设置代理设置-Dhttp.proxyHost以及-Dhttp.proxyPort其他脚本(如上所列)。请参阅Java Networking and Proxies

某些脚本使用自己的方式来设置代理配置SBT_OPTS.sbtopts或者(仅在Windows上)%SBT_HOME%\conf\sbtconfig.txt。您可以使用它们专门设置sbt以使用代理,而其他基于JVM的应用程序根本不受影响。

sbt命令行工具:

# jvm options and output controlJAVA_OPTS          environment variable, if unset uses "$java_opts"SBT_OPTS           environment variable, if unset uses "$default_sbt_opts".sbtopts           if this file exists in the current directory, it is
                   prepended to the runner args/etc/sbt/sbtopts   if this file exists, it is prepended to the runner args-Dkey=val          pass -Dkey=val directly to the java runtime-J-X               pass option -X directly to the java runtime 
                   (-J is stripped)-S-X               add -X to sbt's scalacOptions (-S is stripped)

这里有一段摘录sbt.bat

@REM Envioronment:@REM JAVA_HOME - location of a JDK home dir (mandatory)@REM SBT_OPTS  - JVM options (optional)@REM Configuration:@REM sbtconfig.txt found in the SBT_HOME.

小心sbtconfig.txt,仅仅适用于Windows 。当您使用cygwin该文件时,不会咨询,您将不得不求助于使用其他方法。

我正在使用带有以下脚本的sbt:

$JAVA_HOME/bin/java $SBT_OPTS -jar /Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar "$@"

该脚本的要点是使用从源构建的最新版本的sbt(这就是我使用的原因/Users/jacek/.ivy2/local/org.scala-sbt/sbt-launch/$SBT_LAUNCHER_VERSION-SNAPSHOT/jars/sbt-launch.jar)和$SBT_OPTS属性作为将JVM属性传递给JVM sbt使用的方法。

上面的脚本让我在MacOS X上的命令行上设置代理,如下所示:

SBT_OPTS="-Dhttp.proxyHost=proxyhost -Dhttp.proxyPort=9999" sbt

正如您所看到的,有很多方法可以为sbt设置代理,所有这些方法都可以归结为为JVM sbt使用设置代理。


查看完整回答
反对 回复 2019-08-26
?
精慕HU


在Windows环境中,只需在sbt / sbtconfig.txt中添加以下行


-Dhttp.proxyHost=PROXYHOST 

-Dhttp.proxyPort=PROXYPORT 

-Dhttp.proxyUser=USERNAME 

-Dhttp.proxyPassword=XXXX

或Https等价物(感谢评论)


-Dhttps.proxyHost=PROXYHOST 

-Dhttps.proxyPort=PROXYPORT 

-Dhttps.proxyUser=USERNAME 

-Dhttps.proxyPassword=XXXX


查看完整回答
反对 回复 2019-08-26
  • 3 回答
  • 0 关注
  • 367 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信