首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过SBT将本地缓存的jar文件复制到文件夹?

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

Stack Overflow用户
提问于 2016-11-19 00:03:43
回答 2查看 538关注 0票数 3

我希望将要复制的libraryDependencies中指定的所有jars文件复制到任务中的某个文件夹中。

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

代码语言:javascript
复制
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"
)

现在我想创建一个任务,这样每次运行任务时,它都会将依赖项中的jars复制到一个文件夹中。

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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2016-11-19 00:30:17

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

代码语言:javascript
复制
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)
  }
}
票数 5
EN

Stack Overflow用户

发布于 2020-10-15 17:14:46

另一种选择是使用sbt-native-packager plugin with the Java Archetype并运行:

代码语言:javascript
复制
sbt stage

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40681423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档