鉴于我有 build.sbt
name := """app"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayScala)
scalaVersion := "2.11.7"
// <-- some other code -->
import Fixtures._
lazy val fixtures = inputKey[Unit]("Generating Cassandra fixtures")
fixtures := {
Fixtures.generate()
}
Run Code Online (Sandbox Code Playgroud)
和Fixtures.scala在project
目录中
object Fixtures {
def generate (): Unit = {
println("generating fixtures")
}
}
Run Code Online (Sandbox Code Playgroud)
我能够运行命令./activator fixtures
,我正在"生成固定装置"
但是我怎么能调用某些服务,比如说GenerateUserFixtureService.scala
从app/scala/com/MyProject/Service
目录中调用.导入包不起作用,因为project
目录属于不同的包.我无法Fixtures.scala
从Play 导入任何内容
|
|___app
| |__scala
| |__com
| |__MyProject
| |__Service
| |--GenerateUserFixtureService.scala
|___project
| |--Fixtures.scala
|___
|--build.sbt
Run Code Online (Sandbox Code Playgroud)
实际上问题是,为什么我只能导入目录中的build.sbt
文件project
.或者如何从app
dir 调用另一个文件?
或许我想的方式完全错了.我只是想创建一些命令upload:fixtures
send:emails
等,并调用一些scala类.我怎样才能做到这一点?
要创建自定义命令,必须指定与命令逻辑对应的函数.让我们考虑几个例子:首先打印问候消息:
def helloSbt = Command.command("hello") { state =>
println("Hello, SBT")
state
}
commands += helloSbt
Run Code Online (Sandbox Code Playgroud)
只需将此代码放入build.sbt
,commands
将project key
其存在sbt.Keys
为val commands = SettingKey[Seq[Command]]
当然,您可以像成功或失败一样管理命令语句:
def failJustForFun = Command.single("fail-condidtion") {
case (state, "true") => state.fail
case (state, _) => state
}
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式更改控制台中特定部分命令或此命令输出的颜色DefaultParsers
:
lazy val color = token( Space ~> ("blue" ^^^ "4" | "green" ^^^ "2") )
lazy val select = token( "fg" ^^^ "3" | "bg" ^^^ "4" )
lazy val setColor = (select ~ color) map { case (g, c) => "\033[" + g + c + "m" }
Run Code Online (Sandbox Code Playgroud)
或者,您可以扩展xsbti.AppMain
和实施 - 您自己的逻辑
归档时间: |
|
查看次数: |
1637 次 |
最近记录: |