获取scrooge以在测试阶段生成源文件?

时间:2016-11-19 01:19:40

标签: sbt scrooge

我有一个多模块构建,看起来有点像:

lazy val root = (project in file(".")).
  settings(common).
  aggregate(finagle_core, finagle_thrift)

lazy val finagle_core =
  project.
    settings(common).
    settings(Seq(
      name := "finagle-core",
      libraryDependencies ++= Dependencies.finagle
    ))

lazy val finagle_thrift =
  project.
    settings(common).
    settings(Seq(
      name := "finagle-thrift",
      libraryDependencies ++= Dependencies.finagleThrift,
      scroogeThriftSourceFolder in Test <<= baseDirectory {
        base => {
          base / "target/thrift_external/"
        }
      },
      scroogeThriftDependencies in Test := Seq(
        "external-client"
      ),
      scroogeBuildOptions in Test := Seq(
        WithFinagle
      )
    )).dependsOn(finagle_core)

finagle_thrift依赖于包含thrift文件的jar文件external-client。我希望它将thrift文件解压缩到target/thrift_external并将thrift文件编译到客户端。

这确实有效,但是我必须执行两次sbt才能使它工作。我第一次运行sbt时,它并没有提取文件。它第二次。我不知道为什么会这样。

==

编辑:

我看到发生了什么事。它会在测试时解压缩依赖项,但是因为在解包之前会对设置进行评估,所以生成的代码不会获取生成的文件列表。它第二次运行时,它已被提取,因此它会获取节俭文件

== 编辑2:

我以超级笨拙的方式解决了这个问题:

addCommandAlias("build", "; test:scroogeUnpackDeps; compile")

现在首先解压缩,然后编译

0 个答案:

没有答案