sbt-dependency-graph等效于项目间依赖项

时间:2015-05-24 18:53:25

标签: sbt

是否存在项目间依赖关系的sbt-dependency-graph等价物(即projectA dependsOn projectB)?无论是作为sbt插件还是使用sbt内部。

2 个答案:

答案 0 :(得分:2)

不幸的是,我不知道有什么插件能够满足您的需求。

这是一个简单的SBT任务,可以快速显示项目中的所有依赖项。这是非常基本的,我相信我们可以在输出的可视化/格式化方面做得更好。在build.sbt文件中添加以下内容。

lazy val showInterProjectDependencies = taskKey[String]("Print inter-project dependencies")

showInterProjectDependencies := {
   val pd: Seq[ModuleID] = projectDependencies.value
   val str = name + " -> " + pd.map(_.name).mkString(", ")
   streams.value.log.info(str)
   str
}

如果您有多项目构建,请在项目模板中添加:

def projectTemplate(name: String, dir: String): Project = {
  Project(id = name, base = file(dir)).settings(
    showInterProjectDependencies := {
      val p: Seq[ModuleID] = projectDependencies.value
      val str = name + " -> " + p.map(_.name).mkString(", ")
      streams.value.log.info(str)
      str
    }, 
    ...
}

如果您有一个聚合所有子项目的Root项目,则调用showInterProjectDependencies将递归调用所有子项目中的任务。 E.g:

lazy val projectRoot = (
  projectTemplate("MyProjectRoot", ".")
  aggregate(subproject1, subproject2, ...) 
)

答案 1 :(得分:2)

我最后继续写下一篇:sbt-project-graph