gpt4 book ai didi

scala - sbt 0.10下收集依赖(将所有依赖jar放到target/scala-version/lib/)

转载 作者:行者123 更新时间:2023-12-03 16:44:35 25 4
gpt4 key购买 nike

我在 Scala 2.9.1 中使用 sbt 0.10。

我读了
http://groups.google.com/group/simple-build-tool/browse_thread/thread/792e5360877e78/987b6af687b8e33b?lnk=gst&q=collect+jars#987b6af687b8e33b

但是我不想要一个大 jar 。我只想要依赖 jars
最终在 target/scala-2.9.1.final/lib 目录中。

我不想要一个大 jar 的原因,那个项目使用了很多
libs,通常只有应用程序 .jar 更改。然而作为这
是多语言项目,并非所有团队成员都有 scala 或 sbt,
jars 只是提交给 git。拥有一个巨大的 dar 更新规则
会增加 repo 规模。

如何复制这些依赖项? ;)

最佳答案

您没有指定要从中复制配置的 ivy 配置,但这里有一个完整的示例,可以将所有托管依赖项复制到 target/<scala version>/lib文件夹(scala 版本由 crossTarget 任务提供)。只需复制它并将其放入文件 project/Build.scala (或任何你想要的文件名):

import sbt._
import Keys._

object MyBuild extends Build {

lazy val copyDependencies = TaskKey[Unit]("copy-dependencies")

def copyDepTask = copyDependencies <<= (update, crossTarget, scalaVersion) map {
(updateReport, out, scalaVer) =>
updateReport.allFiles foreach { srcPath =>
val destPath = out / "lib" / srcPath.getName
IO.copyFile(srcPath, destPath, preserveLastModified=true)
}
}

lazy val root = Project(
"root",
file("."),
settings = Defaults.defaultSettings ++ Seq(
copyDepTask
)
)
}


如果需要特定配置,请替换
updateReport.allFiles来自 updateReport.select(configuration = Set("compile"))或任何你想要的 Ivy 配置。

关于scala - sbt 0.10下收集依赖(将所有依赖jar放到target/scala-version/lib/),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com