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

sbt-dependency-graph equivalent for inter-project dependencies

是否有 sbt-dependency-graph 等同于项目间依赖关系(即 projectA dependsOn projectB)?作为 sbt 插件或使用 sbt 内部组件。

遗憾的是,我不知道有什么插件可以满足您的需求。

这里有一个简单的SBT任务,可以快速显示项目中的所有依赖项。这真的很基本,我相信我们可以在输出的 visualization/formatting 中做得更好。在您的 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
    }, 
    ...
}

如果您有一个聚合所有子项目的根项目,那么调用 showInterProjectDependencies 将递归调用所有子项目中的任务。例如:

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

我最后继续写了一个:sbt-project-graph