2016-11-18 2 views
1

Я хочу скопировать все банки, указанные в libraryDependencies, для копирования в папку в задаче.Как скопировать локальные кешированные банки в папку через SBT?

Например, у меня есть следующие зависимости, определенные для проекта.

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" 
) 

Теперь я хочу, чтобы создать задачу, чтобы каждый раз, когда я запускаю задачу, он будет копировать банки в зависимости в папку.

Я знаю, что могу вручную указать абсолютные пути для копирования банок. Я хочу задачу, которая может автоматически выводить пути к банкам. Поэтому, когда я добавляю новую зависимость, мне больше не нужно искать путь в кэше .ivy.

Спасибо.

ответ

1

Вы можете использовать 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) 
    } 
} 
Смежные вопросы