Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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 通过build.sbt将单个依赖项jar复制到文件夹中_Scala_Jar_Build_Sbt_Newrelic - Fatal编程技术网

Scala 通过build.sbt将单个依赖项jar复制到文件夹中

Scala 通过build.sbt将单个依赖项jar复制到文件夹中,scala,jar,build,sbt,newrelic,Scala,Jar,Build,Sbt,Newrelic,在阶段任务期间,我想sbt从ivyrepos中抓取newrelicjar并将其复制到文件夹中。理想情况下,jar的配置方式与依赖项的配置方式相同,但不一定在库依赖项Seq本身中(因为它不是构建或运行时依赖项)。您可以声明一个新的配置阶段。您可以在该配置中将libraryDependencies设置为所需的值。稍后,您的stage任务可以读取更新报告并将文件复制到所需目录 val stage = taskKey[Unit]("Stage task") val Stage = config("st

阶段
任务期间,我想
sbt
ivyrepos中抓取newrelicjar并将其复制到文件夹中。理想情况下,jar的配置方式与依赖项的配置方式相同,但不一定在
库依赖项
Seq
本身中(因为它不是构建或运行时依赖项)。

您可以声明一个新的配置
阶段。您可以在该配置中将
libraryDependencies
设置为所需的值。稍后,您的
stage
任务可以读取更新报告并将文件复制到所需目录

val stage = taskKey[Unit]("Stage task")

val Stage = config("stage")

val root = project.in(file(".")).configs(Stage).settings( inConfig(Stage)(Classpaths.ivyBaseSettings): _* )

libraryDependencies in Stage := Seq("com.newrelic.agent.java" % "newrelic-api" % "3.7.0")

stage := {
  (update in Stage).value.allFiles.foreach { f =>
    IO.copyFile(f, baseDirectory.value / f.getName)
  }
}

您可以签出一个工作示例

将jar复制到哪个文件夹?它应该在项目内部吗?是的!我想把它复制到项目根目录下一个名为newrelic的文件夹中。该文件夹将已经存在(因为它将包含
newrelic.yml
,该文件夹将保留在源代码repos中(不过我不想将jar与源代码一起存储)。为此,我收到了一个编译错误-这让我很困惑,因为根据sbt文档,该val应该存在:```[错误]/Users/bloo/Workspace/myapp/project/Build.scala:11:value ivybase设置不是对象sbt.classpath[error]val root=project.in(文件(“.”)。configs(NewRelic)。settings(inConfig(NewRelic)(classpath.ivybase设置):\u*)“``您使用的是sbt 0.13.5吗?@bloo请注意,如果您使用的是较旧版本的sbt,则很可能必须使用
类路径.baseSettings
而不是
类路径.ivyBaseSettings
,不幸的是,当我将此代码片段应用于具有大量
库依赖项的较大build.sbt文件时,de>stage
任务将把所有其他全局依赖项的所有jar复制到目标目录,并且newrelic-api.jar将不包含在其中。似乎stage
中的库依赖项没有充分地将此任务的依赖项与其他依赖项分开。