你如何在sbt命令行查询`mainClass`的值?

时间:2014-07-16 14:22:25

标签: scala sbt

在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的所有值。)

1 个答案:

答案 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)