【问题标题】:How to get list of dependency jars from an sbt 0.10.0 project如何从 sbt 0.10.0 项目中获取依赖项 jar 列表
【发布时间】:2011-06-28 12:28:41
【问题描述】:

我有一个 sbt 0.10.0 项目,它声明了一些依赖项,有点像:

object MyBuild extends Build {
    val commonDeps = Seq("commons-httpclient" % "commons-httpclient" % "3.1",
                         "commons-lang" % "commons-lang" % "2.6")

    val buildSettings = Defaults.defaultSettings ++ Seq ( organization := "org" )

    lazy val proj = Project("proj", file("src"),
        settings = buildSettings ++ Seq(
            name                    := "projname",
            libraryDependencies     := commonDeps, ...)

    ...
}

我希望创建一个构建规则来收集“proj”的所有 jar 依赖项,以便我可以将它们符号链接到单个目录。

谢谢。

【问题讨论】:

  • 'libraryDependencies' 值?认为您可以在命令行上启动 sbt 并编写 lib+ 并获得建议..
  • 我知道 OP 询问了 sbt 10.0,但对于其他人,我只是注意到在 11.3 中您可以使用“sbt classpath”获取类路径。

标签: scala sbt friend


【解决方案1】:

打印完整运行时类路径的示例 SBT 任务

以下是我正在使用的大致内容。 “get-jars”任务可在 SBT 提示符下执行。

import sbt._
import Keys._
object MyBuild extends Build {
  // ...
  val getJars = TaskKey[Unit]("get-jars")
  val getJarsTask = getJars <<= (target, fullClasspath in Runtime) map { (target, cp) =>
    println("Target path is: "+target)
    println("Full classpath is: "+cp.map(_.data).mkString(":"))
  }
  lazy val project = Project (
    "project",
    file ("."),
    settings = Defaults.defaultSettings ++ Seq(getJarsTask)
  )
}

其他资源

  • Unofficial guide 到 sbt 0.10。
  • Keys.scala 定义了预定义的键。例如,您可能希望将 fullClasspath 替换为 managedClasspath
  • This plugin 定义了一个生成 .ensime 文件的简单命令,可能是一个有用的参考。

【讨论】:

  • 谢谢!那个非官方的指南链接真希望我以前能找到它。顺便说一句,你有一个很棒的名字。
猜你喜欢
  • 2017-12-27
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多