Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何通过SBT将本地缓存的JAR复制到文件夹?_Scala_Jar_Sbt - Fatal编程技术网

Scala 如何通过SBT将本地缓存的JAR复制到文件夹?

Scala 如何通过SBT将本地缓存的JAR复制到文件夹?,scala,jar,sbt,Scala,Jar,Sbt,我想将libraryDependencies中指定的所有JAR复制到任务中的文件夹中 例如,我为项目定义了以下依赖项 libraryDependencies ++= Seq( "org.neo4j" % "neo4j" % neo4j_version, "org.scala-lang.modules" %% "scala-java8-compat" % "0.8.0", "org.scala-lang" %% "scala-pickling" % "0.9.1", "org.ne

我想将libraryDependencies中指定的所有JAR复制到任务中的文件夹中

例如,我为项目定义了以下依赖项

libraryDependencies ++= Seq(
  "org.neo4j" % "neo4j" % neo4j_version,
  "org.scala-lang.modules" %% "scala-java8-compat" % "0.8.0",
  "org.scala-lang" %% "scala-pickling" % "0.9.1",
  "org.neo4j.test" % "neo4j-harness" % neo4j_version % "test",
  "org.neo4j.driver" % "neo4j-java-driver" % "1.0.4" % "test"
)
现在我想创建一个任务,这样每次运行任务时,它都会将依赖项中的jar复制到一个文件夹中

我知道我可以手动指定JAR要复制的绝对路径。我想要一个可以自动导出jar路径的任务。因此,稍后当我添加新的依赖项时,我不需要再次在.ivy缓存中查找路径


谢谢。

您可以使用managedClasspath来解决这个问题。请参见下面的示例

val copyJarsTask = TaskKey[Unit]("copy-jars", "Copys jars")

libraryDependencies ++= Seq(
  "org.scala-lang" %% "scala-pickling" % "0.9.1"
)

copyJarsTask := {
  val folder = new File("my-jars")

  (managedClasspath in Compile).value.files.foreach { f =>
    IO.copyFile(f, folder / f.getName)
  }
}

另一个选项是使用并运行:

结果是,所有应用程序依赖项和JAR或应用程序本身都将位于
target/universal/stage/lib/
目录中

sbt stage