descargar - scala jdk
¿Cómo ver el árbol de dependencias en sbt? (4)
Intenté usar el "net.virtual-void" % "sbt-dependency-graph"
mencionado anteriormente y obtuve 9K líneas como resultado (hay muchas líneas vacías y duplicados) en comparación con ~ 180 líneas (exactamente una línea para cada dependencia) en mi proyecto) como el resultado en la mvn dependency:tree
de Maven mvn dependency:tree
salida de mvn dependency:tree
. Así que escribí una task contenedor sbt para ese objetivo de Maven, un truco feo pero funciona:
// You need Maven installed to run it.
lazy val mavenDependencyTree = taskKey[Unit]("Prints a Maven dependency tree")
mavenDependencyTree := {
val scalaReleaseSuffix = "_" + scalaVersion.value.split(''.'').take(2).mkString(".")
val pomXml =
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>artifactId</artifactId>
<version>1.0</version>
<dependencies>
{
libraryDependencies.value.map(moduleId => {
val suffix = moduleId.crossVersion match {
case binary: sbt.librarymanagement.Binary => scalaReleaseSuffix
case _ => ""
}
<dependency>
<groupId>{moduleId.organization}</groupId>
<artifactId>{moduleId.name + suffix}</artifactId>
<version>{moduleId.revision}</version>
</dependency>
})
}
</dependencies>
</project>
val printer = new scala.xml.PrettyPrinter(160, 2)
val pomString = printer.format(pomXml)
val pomPath = java.nio.file.Files.createTempFile("", ".xml").toString
val pw = new java.io.PrintWriter(new File(pomPath))
pw.write(pomString)
pw.close()
println(s"Formed pom file: $pomPath")
import sys.process._
s"mvn -f $pomPath dependency:tree".!
}
Estoy tratando de mostrar el árbol de dependencia SBT como se describe en la documentation :
sbt inspect tree clean
Pero me sale este error:
[error] inspect usage:
[error] inspect [uses|tree|definitions] <key> Prints the value for ''key'', the defining scope, delegates, related definitions, and dependencies.
[error]
[error] inspect
[error] ^
¿Qué está mal? ¿Por qué SBT no construye el árbol?
Si desea ver las dependencias de la biblioteca , puede usar el complemento de coursier
: https://github.com/coursier/coursier#printing-trees
Ejemplo de salida: texto (sin colores): https://gist.github.com/vn971/3086309e5b005576533583915d2fdec4
Tenga en cuenta que el complemento tiene una naturaleza completamente diferente a la impresión de árboles. Está diseñado para descargas de dependencias rápidas y concurrentes. Pero es agradable y se puede agregar a casi cualquier proyecto, así que creo que vale la pena mencionarlo.
Si desea ver realmente las dependencias de la biblioteca (como lo haría con Maven) en lugar de las dependencias de tareas (que es lo que inspect tree
muestra), entonces querrá usar el sbt-dependency-graph .
Agregue lo siguiente a su proyecto / plugins.sbt (o los plugins.sbt globales).
addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2")
Luego tiene acceso al comando dependencyTree
y a otros.
Cuando se ejecuta desde la línea de comandos , se supone que cada argumento enviado a sbt es un comando, por lo que sbt inspect tree clean
will:
- ejecuta el comando
inspect
, - luego ejecuta el comando
tree
, - entonces el comando
clean
Esto obviamente falla, ya que inspect
necesita un argumento. Esto hará lo que quieras:
sbt "inspect tree clean"