Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala sbt-将一些库依赖项复制到输出库文件夹_Scala_Sbt_Apache Spark - Fatal编程技术网

Scala sbt-将一些库依赖项复制到输出库文件夹

Scala sbt-将一些库依赖项复制到输出库文件夹,scala,sbt,apache-spark,Scala,Sbt,Apache Spark,使用sbt,我想将一些依赖项jar复制到liboutput文件夹中。如果可能的话,我想使用%提供的%关键字,就像我可以使用sbt汇编一样 因此,给定一个与下面类似的build.sbt,如何创建一个任务,将ark tweet nlp而不是spark core依赖项复制到target/scala-%ver%/lib retrieveManaged:=true只是复制所有内容,这不是我想要的 ... libraryDependencies += "org.apache.spark" %% "spark

使用sbt,我想将一些依赖项jar复制到
lib
output文件夹中。如果可能的话,我想使用
%提供的%
关键字,就像我可以使用sbt汇编一样

因此,给定一个与下面类似的
build.sbt
,如何创建一个任务,将
ark tweet nlp
而不是
spark core
依赖项复制到
target/scala-%ver%/lib

retrieveManaged:=true
只是复制所有内容,这不是我想要的

...
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.0.0" % "provided"

libraryDependencies += "edu.cmu.cs" % "ark-tweet-nlp" % "0.3.2"

retrieveManaged := true
...

你可以写这样的任务

build.sbt

您必须从
build.sbt
中删除
retrieveManaged:=true
,否则sbt将触发原始检索功能。

工作正常,谢谢!出于我的目的(
sparkshell--jars
),我需要一个以逗号分隔的项目jar和依赖项jar列表,可以使用以下命令生成:
find target/scala-2.10 lib_managed/jars-name*.jar | paste-d,-s
val retrieveNotProvided = taskKey[Unit]("Copies non provided and non internal dependencies")

def isInternalOrProvided(conf: String) = conf.contains("-internal") || conf == "provided"

retrieveNotProvided := {
  val toCopy = new collection.mutable.HashSet[(File, File)]
  val pattern = retrievePattern.value
  val output = managedDirectory.value
  update.value.retrieve { (conf, mid, art, cached) =>
    import org.apache.ivy.core.IvyPatternHelper
    val fileName = IvyPatternHelper.substitute(
      pattern, mid.organization, mid.name, mid.revision, art.name, art.`type`, art.extension, conf
    )
    if (!isInternalOrProvided(conf)) toCopy += (cached -> output / fileName)
    cached
  }
  IO.copy(toCopy)
}