有没有办法通过sbt插件获取项目的所有依赖项?

时间:2012-02-29 07:03:02

标签: scala sbt

我想编写一个sbt插件,在其中我需要获取当前项目的所有依赖项的列表(可能有一些信息)。有可能吗?

1 个答案:

答案 0 :(得分:5)

在我们的项目中,我们使用更新任务来获取库依赖项:

(update) map {
  (updateReport) =>
    updateReport.select(Set("compile", "runtime")) foreach { srcPath => /* do something with it */ }
}

希望这有助于一个开始。

[编辑] 以下是如何将此功能添加到您的任务的简单示例:

val depsTask = TaskKey[Unit]("find-deps", "finds the dependencies")

val testConf = config("TestTasks") hide

private lazy val testSettings = inConfig(testConf)(Seq(
    depsTask <<= (update) map {
        (updateReport) =>
            updateReport.select(Set("compile", "runtime")) foreach { srcPath => println("src path = " + srcPath) }
    }
))

要使用此任务,只需将 testSettings 添加到您的项目中。

有关任务的更多信息,请参阅sbt documentation。可以在here找到有关更新任务的更多信息。

[EDIT2] 更新任务仅获取库依赖项。我从未尝试过外部 项目依赖项(比如git存储库)。也许您需要以下内容:find project artifacts。任务 allTheArtifacts 查找项目的工件及其项目依赖项的工件。