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]
})
编译中编译