我刚刚切换到SBT 0.13.1并且arg处理已更改或存在错误.这是我正在测试的(命名sbt-test.scala):
#!/bin/sh
SBT_0_13_0="/path/to/sbt-launch-0.13.0.jar"
SBT_0_13_1="/path/to/sbt-launch-0.13.1.jar"
SBT="$SBT_0_13_1"
exec java $JAVA_OPTS -Dsbt.main.class=sbt.ScriptMain -jar "$SBT" $0 "$@"
!#
/***
scalaVersion := "2.10.3"
libraryDependencies ++= Seq(
"com.typesafe" % "config" % "1.0.0"
)
*/
import com.typesafe.config.{ConfigFactory, Config}
println(s"Args: ${args mkString ", "}")
val cfg = ConfigFactory.parseString(
"""
|credentials {
| user = someone
| pass = s3cr3t
|}
""".stripMargin)
println(cfg getString "credentials.user")
Run Code Online (Sandbox Code Playgroud)
当我运行时,./sbt-test.scala --arg=val我收到以下错误:
[error] Expected ID character
[error] Not a valid command: arg
[error] arg=val
Run Code Online (Sandbox Code Playgroud)
使用SBT 0.13.0的相同参数运行相同的脚本会产生预期的:
Args: --arg=val
someone …Run Code Online (Sandbox Code Playgroud) 我想在 sbt 交互模式下运行几个 sbt 命令,即不离开 sbt “shell”?
(注意: 有些问题回答了如何在标准 shell 中使用 sbt 将参数传递给 sbt-commands。不是我在这里想要的)
示例:我在 sbt 交互式 shell 中,我想运行“test:compile”,然后运行“test”
我知道 test 会调用 required 编译,但在这个例子中,我想在任何测试开始之前运行所有子项目的编译。
sbt ×2