Подтвердить что ты не робот

Как отобразить класс, используемый для выполнения задачи?

Как может classpath, используемый для задачи 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
}

runClasspath - это экземпляр PathFinder [1], и вы можете допросить его еще больше. Я предполагаю, что создание списка разделяемых разделов:: - будет легко.

Я не понимаю, где и как я должен использовать этот совет. Просьба сообщить.

4b9b3361

Ответ 1

Добавьте строку lazy val printClasspath ... в файл build.sbt.

Затем в командной строке выполните:

sbt printClasspath

Ответ 2

Если я наберу это в оболочке sbt:

inspect run

Я вижу, среди прочих результатов:

[info] Dependencies:
[info]  runtime:fullClasspath

Итак, если я набираю:

show runtime:fullClasspath

Я получаю вывод как:

 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))

Скорее всего, вы искали?

Вы также можете получить его в форме, разделенной двоеточием, подходящей для использования с java -classpath в командной строке:

export runtime:fullClasspath

который печатает, например:

/Users/tisue/Dropbox/repos/euler/target/scala-2.10/classes:/Users/tisue/.sbt/boot/scala-2.10.3/lib/scala-library.jar

Ответ 3

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.

Пользовательская задача для сброса 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

В 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.

Вам просто нужно проанализировать значение параметра 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

Чтобы иметь более синтаксический вывод, используйте следующую задачу, которая читает fullClasspath как определено для области runtime (runtime в Scala/SBT-коде):

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

printClasspath := {
  (fullClasspath in Runtime value) foreach {
    e => println(e.data)
  }
}

К сожалению, конфигурация runtime жестко запрограммирована и считает, что входная задача для принятия конфигурации сделает ее намного лучше.

Ответ 4

или непосредственно из bash, тире, sh или любой оболочки:

 sbt 'inspect run' 'show runtime:fullClasspath'

и

 sbt "inspect run" "show runtime:fullClasspath"

для командной строки Windows.