2016-11-18 1 views
1

Ich möchte alle Gläser kopieren, die in den libraryDependencies angegeben sind, um in einen Ordner in einer Aufgabe kopiert zu werden.Wie kopiert man lokal zwischengespeicherte Gläser in einen Ordner über SBT?

Zum Beispiel habe ich die folgenden Abhängigkeiten für das Projekt definiert.

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

Jetzt möchte ich eine Aufgabe erstellen, so dass jedes Mal, wenn ich die Aufgabe ausführen, wird es die Gläser in den Abhängigkeiten in einen Ordner kopieren.

Ich weiß, dass ich die absoluten Pfade für die Gläser manuell angeben kann, um zu kopieren. Ich möchte eine Aufgabe, die automatisch die Pfade zu den Gläsern ableiten kann. Wenn ich später eine neue Abhängigkeit hinzufüge, muss ich den Pfad im .ivy-Cache nicht erneut finden.

Danke.

Antwort

1

Sie können dies mit managedClasspath herausfinden. Siehe unten für ein Beispiel.

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) 
    } 
} 
Verwandte Themen