小编Pau*_*air的帖子

SBT:如何使一个任务依赖于多项目构建中的另一个任务,而不是在根项目中运行?

对于我的多项目构建,我正在尝试创建一个只导致scct:test的验证任务,然后按顺序执行scalastyle.我想scct:test来执行所有子项目,但不是顶层项目.(如果它是针对顶级项目执行的,我会从scct中"等待覆盖率报告超时",因为该项目中没有源代码和任何测试.)我想要做的是创建一个验证作为任务依赖于scct:test和scalastyle.事实证明这是相当巴洛克式的.这是我的顶级项目/目录中的Build.scala:

object MyBuild extends Build {
  val verifyTask = TaskKey[Unit]("verify", "Compiles, runs tests via scct:test and then runs scalastyle")
  val scctTestTask = (test in ScctPlugin.Scct).scopedKey
  val scalastyleTask = PluginKeys.scalastyleTarget.scopedKey

  lazy val root = Project("rootProject",
                      file("."),
                      settings =  Defaults.defaultSettings ++
                                  ScalastylePlugin.Settings ++
                                  ScctPlugin.instrumentSettings ++
                                  ScctPlugin.mergeReportSettings ++
                                  Seq(
                                    verifyTask in Global := {},
                                    verifyTask <<= verifyTask.dependsOn(scctTestTask, scalastyleTask)
                                  )
              ) aggregate(lift_webapp, selenium_tests)

  lazy val subproject_1 = Project(id = "subproject_1", base = file("subproject_1"))

  lazy val subproject_2 = Project(id = "subproject_2", base = file("subproject_2"))
} …
Run Code Online (Sandbox Code Playgroud)

scala sbt

11
推荐指数
2
解决办法
2863
查看次数

F#自定义类型提供程序:"容器类型已设置"错误

最近我参加了Keith Battochi关于类型提供程序的教程,其中他在MSDN教程中介绍了MiniCsv类型提供程序的变体.不幸的是,我的笔记本电脑不可用,所以我不得不手工写下代码.我相信我已经重新创建了类型提供者,但我得到了

error FS3033: The type provider 'CsvFileTypeProvider+CsvFileTypeProvider' reported an error: container type for 'CsvFileProvider.Row' was already set to 'CsvFileProvider.CsvFile,Filename="events.csv"
Run Code Online (Sandbox Code Playgroud)

当我查看代码时,我无法看到我如何将Row类型添加到容器两次(或者添加到其他容器中).删除选定的代码行没有帮助.

这是我在fsi中调用代码的方式:

#r "CsvFileTypeProvider.dll"
open CsvFileProvider
let eventInfos = new CsvFile<"events.csv">() ;;
Run Code Online (Sandbox Code Playgroud)

这是代码本身:

module CsvFileTypeProvider
open Samples.FSharp.ProvidedTypes
open Microsoft.FSharp.Core.CompilerServices

let getType str =
    if System.DateTime.TryParse(str, ref Unchecked.defaultof<_>) then
        typeof<System.DateTime>, (fun (str:Quotations.Expr) -> <@@ System.DateTime.Parse(%%str) @@>)
    elif System.Int32.TryParse(str, ref Unchecked.defaultof<_>) then
        typeof<System.Int32>, (fun (str:Quotations.Expr) -> <@@ System.Int32.Parse(%%str) @@>)
    elif System.Double.TryParse(str, ref Unchecked.defaultof<_>) then
        typeof<System.Double>, (fun (str:Quotations.Expr) -> <@@ System.Double.Parse(%%str) @@>)
    else …
Run Code Online (Sandbox Code Playgroud)

f# type-providers

6
推荐指数
1
解决办法
306
查看次数

标签 统计

f# ×1

sbt ×1

scala ×1

type-providers ×1