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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |