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
中的库依赖项没有充分地将此任务的依赖项与其他依赖项分开。