Sbt 如何在编译期间将依赖项jar提取到特定文件夹?

Sbt 如何在编译期间将依赖项jar提取到特定文件夹?,sbt,Sbt,以下是我的项目的依赖项: libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, javaWs, "com.company" % "common_2.11" % "2.3.3" ) 在com.company.common_2.11-2.3.3中有一个jar文件common_2.11-2.3.3-adtnl.jar 在编译过程中,我如何在build.sbt中告诉sbt将其内容提取到项目中的特定文件夹中?在build.s

以下是我的项目的依赖项:

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  cache,
  javaWs,
  "com.company" % "common_2.11" % "2.3.3"
)
com.company.common_2.11-2.3.3
中有一个jar文件
common_2.11-2.3.3-adtnl.jar


在编译过程中,我如何在
build.sbt
中告诉sbt将其内容提取到项目中的特定文件夹中?

build.sbt
中使用以下命令:

def unpackjar(jar: File, to: File): File = {
  println(s"Processing $jar and saving to $to")
  IO.unzip(jar, to)
  jar
}

resourceGenerators in Compile += Def.task {
    val jar = (update in Compile).value
            .select(configurationFilter("compile"))
            .filter(_.name.contains("common"))
            .head
  val to = (target in Compile).value / "unjar"
  unpackjar(jar, to)
  Seq.empty[File]
}.taskValue
它假定
“common”
是所有依赖项中唯一的部分。否则,您需要修复
过滤器

它还假设您并不真的希望文件在
编译
,而是在调用
时稍晚一点。您需要将代码在
Def.task{…}
compilein compile
块之间移动,如下所示:

compile in Compile <<= (compile in Compile).dependsOn(Def.task {
  val jar = (update in Compile).value
            .select(configurationFilter("compile"))
            .filter(_.name.contains("common"))
            .head
  val to = (target in Compile).value / "unjar"
  unpackjar(jar, to)
  Seq.empty[File]
})
编译中编译