在sbt命令行中,只需输入其名称即可查找build.sbt
中的大多数变量 - 例如:
> libraryDependencies
[info] List(org.scala-lang:scala-library:2.10.3, junit:junit:latest.revision)
但这不适用于mainClass
:
> mainClass
[success] Total time: 0 s, completed Jul 16, 2014 7:20:58 AM
大概这是因为你设置mainClass
的价值的方式并不那么简单 - 你必须把这样的事情放在build.sbt
中:
mainClass in (Compile, run) := Some("com.example.MyClass")
mainClass in (Compile, packageBin) := Some("com.example.MyClass")
mainClass in (Test, run) := Some("com.example.MyClass")
mainClass in (Test, packageBin) := Some("com.example.MyClass")
事实上,事实证明mainClass
实际上并不是一个普通的价值 - 它是TaskKey
,而不是SettingKey
。所以当你在sbt命令行输入它的名字时,我认为sbt实际上正在运行一些代码。
那么......我在sbt命令行输入什么来查询,例如mainClass in (Compile, run)
的值? (或者,mainClass
的所有值。)
答案 0 :(得分:5)
如果在命令行中输入名称,设置会默认显示其值,但任务不会。 libraryDependencies
是一个设置,这就是它默认显示其值的原因。
mainClass
是一项任务。要显示任务的值,您必须明确使用show
:
> show mainClass
如果您想要查看给定范围,任务和/或项目中的值,则应填写必要的轴 - 请参阅http://www.scala-sbt.org/0.13.5/docs/Getting-Started/Scopes.html。
> show run::mainClass
[info] Some(com.example.Hello)
> show compile:mainClass
[info] Some(com.example.Hello)