我想编写一个sbt插件,在其中我需要获取当前项目的所有依赖项的列表(可能有一些信息)。有可能吗?
答案 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 查找项目的工件及其项目依赖项的工件。