在 sbt 项目中,如何获取范围内的依赖项的完整列表?
In a sbt project, how to get full list of dependencies with scope?
在 sbt 项目中,如何获取带有范围的依赖项(包括传递依赖项)的完整列表?
例如:
xxx.jar(Compile)
yyy.jar(Provided)
zzz.jar(Test)
...
从 sbt
shell 您可以执行以下一个或所有命令:
Test / fullClasspath
Runtime / fullClasspath
Compile / fullClasspath
这将输出与范围关联的 jar (Test/Runtime/Compile)。
如果您想更花哨一些,sbt
提供了多种与依赖管理系统生成的输出进行交互的方法。文档是 here.
例如,您可以将此添加到您的 build.sbt
文件中:
lazy val printReport = taskKey[Unit]("Report which jars are in each scope.")
printReport := {
val updateReport: UpdateReport = update.value
val jarFilter: ArtifactFilter = artifactFilter(`type` = "jar")
val testFilter = configurationFilter(name = "test")
val compileFilter = configurationFilter(name = "compile")
val testJars = updateReport.matching(jarFilter && testFilter)
val compileJars = updateReport.matching(jarFilter && compileFilter)
println("Test jars:\n===")
for (jar <- testJars.sorted) yield {println(jar.getName)}
println("\n\n******\n\n")
println("compile jars:\n===")
for (jar <- compileJars.sorted) yield {println(jar.getName)}
}
它创建了一个新任务 printReport
,它可以像使用 sbt printReport
的普通 sbt
命令一样执行。它获取由 update
任务生成的 UpdateReport
的值,然后在打印结果之前在各自的 test/compile 范围内过滤 jar 文件。
在 sbt 项目中,如何获取带有范围的依赖项(包括传递依赖项)的完整列表?
例如:
xxx.jar(Compile)
yyy.jar(Provided)
zzz.jar(Test)
...
从 sbt
shell 您可以执行以下一个或所有命令:
Test / fullClasspath
Runtime / fullClasspath
Compile / fullClasspath
这将输出与范围关联的 jar (Test/Runtime/Compile)。
如果您想更花哨一些,sbt
提供了多种与依赖管理系统生成的输出进行交互的方法。文档是 here.
例如,您可以将此添加到您的 build.sbt
文件中:
lazy val printReport = taskKey[Unit]("Report which jars are in each scope.")
printReport := {
val updateReport: UpdateReport = update.value
val jarFilter: ArtifactFilter = artifactFilter(`type` = "jar")
val testFilter = configurationFilter(name = "test")
val compileFilter = configurationFilter(name = "compile")
val testJars = updateReport.matching(jarFilter && testFilter)
val compileJars = updateReport.matching(jarFilter && compileFilter)
println("Test jars:\n===")
for (jar <- testJars.sorted) yield {println(jar.getName)}
println("\n\n******\n\n")
println("compile jars:\n===")
for (jar <- compileJars.sorted) yield {println(jar.getName)}
}
它创建了一个新任务 printReport
,它可以像使用 sbt printReport
的普通 sbt
命令一样执行。它获取由 update
任务生成的 UpdateReport
的值,然后在打印结果之前在各自的 test/compile 范围内过滤 jar 文件。