我已经开始在cygwin,
上使用sbt,但遇到了一个问题,即我的键入在console
中无法回显。
根据这一建议,sbt现在回声,例如:
$ sbt
[info] Loading project definition from D:cygwinhomeAdministratorscala-2.11.2courseraexampleprojectproject
[info] Loading project definition from D:cygwinhomeAdministratorscala-2.11.2courseraexampleproject
[info] Set current project to progfun-example (in build file:/D:/cygwin/home/Administrator/scala-2.11.2/coursera/example/)
> ; eval System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal")
[info] ans: java.lang.String = jline.UnixTerminal
> console
[info] Starting scala interpreter...
[info]
Welcome to Scala version 2.10.4 (Java HotSpot(TM) Client VM, Java 1.7.0_67).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import example.Lists._
import example.Lists._
scala>
我试图通过在~/.sbtconfig
中输入行export SBT_OPTS="-Djline.terminal=scala.tools.jline.UnixTerminal"
来自动执行此修复,但我可能没有使用正确的语法,因为回显似乎不起作用。
如何让sbt console
自动使用; eval System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal")
?
在sbt中有很多东西可以发现。。。
> inspect initialize
[info] Setting: Unit = ()
[info] Description:
[info] A convenience setting for performing side-effects during initialization.
[info] Provided by:
[info] */*:initialize
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:153
[info] Delegates:
[info] *:initialize
[info] {.}/*:initialize
[info] */*:initialize
[info] Related:
[info] */*:initialize
您可以利用称为的initialize
在初始化期间执行副作用。使用~/.sbt/0.13/default.sbt
中的以下内容,您可以实现执行System.setProperty
:
initialize := {
System.setProperty("jline.terminal", "scala.tools.jline.UnixTerminal")
}
当在sbtshell中执行eval sys.props("jline.terminal")
以将其检出。它在console
中工作良好(调用sys.props
时丢弃eval
)。