我有一个多模块构建,看起来有点像:
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")
现在首先解压缩,然后编译