如何显示用于运行任务的类路径?

Ole*_*leg 25 sbt

如何run在SBT 0.13下显示用于任务的类路径?

我在这里找到了一些信息https://groups.google.com/forum/#!msg/simple-build-tool/0rhVRPnjyZU/DOYAd14gh1wJ:

我倾向于使用类路径作为最近对我的构建进行故障排除的方法,也许这个任务也可以帮助你:

lazy val printClasspath = task {
  this.runClasspath.getPaths.foreach(println);
  None
}
Run Code Online (Sandbox Code Playgroud)

runClasspath是一个PathFinder [1]实例,您可以进一步询问它.我想构建一个':' - 这些路径的分隔列表将很容易.

我不明白我应该在哪里以及如何使用这个提示.请指教.

Set*_*sue 43

如果我在sbt shell中输入:

inspect run
Run Code Online (Sandbox Code Playgroud)

我看到,除了其他输出:

[info] Dependencies:
[info]  runtime:fullClasspath
Run Code Online (Sandbox Code Playgroud)

那么如果我输入:

show runtime:fullClasspath
Run Code Online (Sandbox Code Playgroud)

我输出如下:

 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))
Run Code Online (Sandbox Code Playgroud)

这可能是你想要的?

您也可以使用以冒号分隔的形式获取它,以便java -classpath在命令行中使用:

export runtime:fullClasspath
Run Code Online (Sandbox Code Playgroud)

打印例如:

/Users/tisue/Dropbox/repos/euler/target/scala-2.10/classes:/Users/tisue/.sbt/boot/scala-2.10.3/lib/scala-library.jar
Run Code Online (Sandbox Code Playgroud)

  • `sbt"export runtime:fullClasspath"`如果要使用它来调用Scala,则将类路径输出为冒号分隔列表. (6认同)
  • 对于SBT 0.12.X,它似乎只是:`show runtime:full-classpath` (2认同)

Jac*_*ski 13

tl; dr使用last run或编写自定义任务.

最后一次

last run你应该看到整个类路径:

[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.
Run Code Online (Sandbox Code Playgroud)

自定义任务以转储CLASSPATH

如果您需要查看run任务所依赖的内容,请使用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
Run Code Online (Sandbox Code Playgroud)

Dependencies那里runtime:fullClasspath设置意味着run取决于它的价值.

根据SBT help,fullClasspath是......

[fullclasspath]> help fullClasspath
The exported classpath, consisting of build products and unmanaged and managed, internal and external dependencies.
Run Code Online (Sandbox Code Playgroud)

您只需解析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
Run Code Online (Sandbox Code Playgroud)

要获得更易解析的输出,请使用以下fullClasspathruntime作用域定义的读取任务(Runtime在Scala/SBT代码中):

lazy val printClasspath = taskKey[Unit]("Dump classpath")

printClasspath := {
  (fullClasspath in Runtime value) foreach {
    e => println(e.data)
  }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,Runtime配置是硬编码的,并认为接受配置的输入任务会使它变得更好.


Yor*_*iev 10

或直接来自bash,dash,sh或任何shell:

 sbt 'inspect run' 'show runtime:fullClasspath'
Run Code Online (Sandbox Code Playgroud)

 sbt "inspect run" "show runtime:fullClasspath"
Run Code Online (Sandbox Code Playgroud)

对于Windows命令行.


Kra*_*log 0

lazy val printClasspath ...在您的 build.sbt 文件中添加该行。

然后在命令行运行:

sbt printClasspath

  • `lazy val printClasspath ...` 不是一个有效的示例 (6认同)
  • @EricKolotyluk 这句话是问题中的引用。我正在解释它应该放在哪里。 (3认同)