sbt - toyota - ¿Cómo mostrar classpath utilizado para ejecutar la tarea?
sbt programas de tv (4)
Agregue la línea lazy val printClasspath ...
en su archivo build.sbt.
Luego, en la línea de comandos, ejecute:
sbt printClasspath
¿Cómo se puede mostrar la ruta de clase utilizada para run
tarea en SBT 0.13?
He encontrado información aquí https://groups.google.com/forum/#!msg/simple-build-tool/0rhVRPnjyZU/DOYAd14gh1wJ :
Estaba descartando mis rutas de clase como una forma de solucionar problemas de mi compilación recientemente y quizás esta tarea también pueda ayudarte:
lazy val printClasspath = task { this.runClasspath.getPaths.foreach(println); None }
runClasspath es una instancia de PathFinder [1] y puedes interrogarla aún más. Supongo que construir una lista separada por '':'' de esas rutas será fácil.
No entiendo dónde y cómo debo usar este consejo. Por favor avise.
Si escribo esto en la shell sbt:
inspect run
Veo, entre otras salidas:
[info] Dependencies:
[info] runtime:fullClasspath
Entonces si escribo:
show runtime:fullClasspath
Me sale como:
List(
Attributed(/Users/tisue/Dropbox/repos/euler/target/scala-2.10/classes),
Attributed(/Users/tisue/.sbt/boot/scala-2.10.3/lib/scala-library.jar))
¿Cuál es probablemente lo que estabas buscando?
También puede obtenerlo en una forma separada por dos puntos adecuada para usar con java -classpath
en la línea de comando:
export runtime:fullClasspath
que imprime por ejemplo:
/Users/tisue/Dropbox/repos/euler/target/scala-2.10/classes:/Users/tisue/.sbt/boot/scala-2.10.3/lib/scala-library.jar
o directamente desde el bash, dash, sh o lo que sea shell:
sbt ''inspect run'' ''show runtime:fullClasspath''
y
sbt "inspect run" "show runtime:fullClasspath"
para la línea de comandos de Windows.
tl; dr Usa la last run
o escribe una tarea personalizada.
última carrera
Con la last run
deberías ver el classpath completo:
[info] Running main.Main
[debug] Waiting for threads to exit or System.exit to be called.
[debug] Classpath:
[debug] /Users/jacek/work/ingrifo/dictionary-spray/target/scala-2.11/classes
[debug] /Users/jacek/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.4.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-can_2.11/bundles/spray-can_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-io_2.11/bundles/spray-io_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-util_2.11/bundles/spray-util_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-http_2.11/bundles/spray-http_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/org.parboiled/parboiled-scala_2.11/bundles/parboiled-scala_2.11-1.1.6.jar
[debug] /Users/jacek/.ivy2/cache/org.parboiled/parboiled-core/bundles/parboiled-core-1.1.6.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-routing_2.11/bundles/spray-routing_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-httpx_2.11/bundles/spray-httpx_2.11-1.3.2.jar
[debug] /Users/jacek/.ivy2/cache/org.scala-lang.modules/scala-xml_2.11/bundles/scala-xml_2.11-1.0.2.jar
[debug] /Users/jacek/.ivy2/cache/org.jvnet.mimepull/mimepull/jars/mimepull-1.9.4.jar
[debug] /Users/jacek/.ivy2/cache/com.chuusai/shapeless_2.11/jars/shapeless_2.11-1.2.4.jar
[debug] /Users/jacek/.ivy2/cache/io.spray/spray-json_2.11/bundles/spray-json_2.11-1.3.1.jar
[debug] /Users/jacek/.ivy2/cache/com.typesafe.akka/akka-actor_2.11/jars/akka-actor_2.11-2.3.6.jar
[debug] /Users/jacek/.ivy2/cache/com.typesafe/config/bundles/config-1.2.1.jar
[debug] Waiting for thread run-main-0 to terminate.
[debug] Thread run-main-0 exited.
[debug] Waiting for thread default-akka.actor.default-dispatcher-4 to terminate.
Tarea personalizada para volcar CLASSPATH
Si necesita ver de qué depende la tarea de run
, utilice inspect
.
[fullclasspath]> inspect run
[info] Input task: Unit
[info] Description:
[info] Runs a main class, passing along arguments provided on the command line.
[info] Provided by:
[info] {file:/Users/jacek/sandbox/so/fullClasspath/}fullclasspath/compile:run
[info] Defined at:
[info] (sbt.Defaults) Defaults.scala:704
[info] Dependencies:
[info] compile:run::streams
[info] runtime:fullClasspath
[info] compile:run::runner
[info] compile:run::mainClass
[info] Delegates:
[info] compile:run
[info] *:run
[info] {.}/compile:run
[info] {.}/*:run
[info] */compile:run
[info] */*:run
[info] Related:
[info] test:run
En Dependencies
está el valor runtime:fullClasspath
, que significa que la run
depende de su valor.
Según la help
SBT, fullClasspath
es ...
[fullclasspath]> help fullClasspath
The exported classpath, consisting of build products and unmanaged and managed, internal and external dependencies.
Simplemente necesita analizar el valor de la configuración de runtime:fullClasspath
de runtime:fullClasspath
.
[fullclasspath]> show runtime:fullClasspath
[info] Updating {file:/Users/jacek/sandbox/so/fullClasspath/}fullclasspath...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] List(Attributed(/Users/jacek/sandbox/so/fullClasspath/target/scala-2.10/classes), Attributed(/Users/jacek/.sbt/boot/scala-2.10.3/lib/scala-library.jar))
[success] Total time: 0 s, completed Feb 13, 2014 1:27:38 AM
Para tener un resultado más analizable, use la siguiente tarea que lee fullClasspath
como se define para el alcance del runtime
( Runtime
en el código de Scala / SBT):
lazy val printClasspath = taskKey[Unit]("Dump classpath")
printClasspath := {
(fullClasspath in Runtime value) foreach {
e => println(e.data)
}
}
Desafortunadamente, la configuración de Runtime
está codificada y creo que una tarea de entrada para aceptar una configuración lo haría mucho mejor.