加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – sbt 0.11运行需要的任务示例

发布时间:2020-12-16 08:51:38 所属栏目:安全 来源:网络整理
导读:我的项目仍在使用sbt 0.7.7,我发现使用sbt提示符运行的实用程序类非常方便.我还可以将它与单独维护的属性结合使用 – 通常用于从主机更改为主机的环境相关值.这是我在项目/构建目录下的项目定义的示例: class MyProject(info: ProjectInfo) extends Default
我的项目仍在使用sbt 0.7.7,我发现使用sbt提示符运行的实用程序类非常方便.我还可以将它与单独维护的属性结合使用 – 通常用于从主机更改为主机的环境相关值.这是我在项目/构建目录下的项目定义的示例:

class MyProject(info: ProjectInfo) extends DefaultProject(info) {
  //...
  lazy val extraProps = new BasicEnvironment {
    // use the project's Logger for any properties-related logging
    def log = MyProject.this.log
    def envBackingPath = path("paths.properties")
    // define some properties that will go in paths.properties
    lazy val inputFile = property[String]
  }

  lazy val myTask = task { args =>
    runTask(Some("foo.bar.MyTask"),runClasspath,extraProps.inputFile.value :: args.toList).dependsOn(compile)
      describedAs "my-task [options]"
  }   
}

然后我可以在sbt shell下使用我的任务作为my-task option1 option2.

我在https://github.com/harrah/xsbt/wiki阅读了新的sbt 0.11文档,包括Tasks和TaskInputs的部分,坦率地说,我仍然在努力完成我在0.7.7上所做的工作.

似乎额外的属性可以简单地替换为单独的environment.sbt,在build.sbt中设置之前必须在project / build.scala中定义任务.看起来还有完成支持,看起来非常有趣.

除此之外,我有点不知所措.我如何完成我对新sbt的所作所为?

解决方法

您可以像这样定义任务:

val myTask = InputKey[Unit]("my-task")

而你的设置:

val inputFile = SettingKey[String]("input-file","input file description")

您还可以定义新配置,例如:

lazy val ExtraProps = config("extra-props") extend(Compile)

将此配置添加到项目中并使用它来设置此配置的设置:

lazy val root = Project("root",file(".")).config( ExtraProps ).settings(
  inputFile in ExtraProps := ...
  ...
  myTask in ExtraPops <<= inputTask { (argTask:TaskKey[Seq[String]]) =>
    (argTask,inputFile) map { (args:Seq[String],iFile[String]) =>
      ...
    }
  }
).dependsOn(compile)

然后使用extra-props启动你的任务:my-task

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读