2016-11-18 7 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" 
) 

は今、私は、タスクを実行するたびに、それはフォルダへの依存関係にjarファイルをコピーするようにタスクを作成します。

jarファイルの絶対パスを手動で指定することができます。私は、ジャーへのパスを自動的に導出できるタスクが必要です。だから後で新しい依存関係を追加するときに、私は再びキャッシュ内のパスを見つける必要はありません。

ありがとうございました。

答えて

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) 
    } 
} 
関連する問題