Scala sbt-将一些库依赖项复制到输出库文件夹
使用sbt,我想将一些依赖项jar复制到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
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)
}