2016-11-18 118 views
1

我想將libraryDependencies中指定的所有jar複製到任務中的文件夾中。如何通過SBT將本地緩存的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" 
) 

現在我想創建一個任務,讓我每次運行任務時,它會在依賴複製的罐子到一個文件夾。

我知道我可以手動指定罐子複製的絕對路徑。我想要一個可以自動派生出罐子路徑的任務。因此,稍後當我添加新的依賴項時,我不需要再次在.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) 
    } 
} 
相關問題