Как я могу позволить sbt загрузить источник scala -library.jar?

Я знаю, если я добавлю withSources, когда я определяю одну зависимость, sbt может автоматически загрузить этот файл источника jar. Например,

val specs = "org.scala-tools.testing" % "specs_2.8.1" % "1.6.6" % "test" withSources()

Но для scala -library.jar и scala -compiler.jar мне не нужно явно определять их, как я могу получить sbt для загрузки своих источников для меня? Таким образом, мне не нужно настраивать его вручную после создания проекта идеи с помощью sbt-idea-plugin.

Ответы

Ответ 1

Вы должны изменить свойства загрузки. В недавнем блоге есть хорошее описание decodified из Mathias:
"Как сделать загрузку SBT scala источниками библиотеки "(начато с @hseeberger стартовые точки)


Вот соответствующая часть (в случае, если эта ссылка никогда не устаревает)

Во-первых, забудьте о попытке найти "скрытый" параметр в определении вашего проекта SBT, включив загрузку библиотеки scala! Он не существует (по крайней мере, не в SBT версии 0.7.x).
Скорее, есть две вещи, которые вам нужно сделать, чтобы взломать SBT в подчинение:

  • Создайте альтернативный файл конфигурации для вашей пусковой установки SBT.
  • Используйте пусковую установку SBT.

Подробные инструкции:

  • Найдите файл sbt-launcher-0.7.x.jar.
    Поскольку Im на OS/X и использовать SBT через Homebrew, мой мир живет в /usr/local/Cellar/sbt/0.7.5.RC0/libexec/sbt-launch-0.7.5.RC0.jar.
  • Извлеките sbt.boot.properties из подкаталога sbt в банке запуска
  • Запустите свой любимый редактор и измените строку 3 на классификаторы: sources (раскомментируйте строку)
  • Найдите файл sbt script, который вы создали во время настройки SBT (например, ~/bin/sbt или, если используете Homebrew, /usr/local/Cellar/sbt/0.7.x/bin/sbt)
  • Добавьте путь к вашему tweaked sbt.boot.properties файлу, добавленному символом @ и в двойных кавычках, в качестве второго аргумента java-вызова.

Вот как выглядит мой файл sbt script:

#!/bin/sh
java -Xmx768M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m \
     -jar /usr/local/Cellar/sbt/0.7.5.RC0/libexec/sbt-launch-0.7.5.RC0.jar \
     "@/usr/local/Cellar/sbt/0.7.5.RC0/libexec/sbt.boot.properties" \
     "[email protected]"

После того, как вы выполнили эти шаги, SBT должен с радостью загрузить файлы scala-...-sources.jar для компилятора scala и стандартной библиотеки для любого нового проекта, который вы создаете.
Чтобы SBT выполнил это для существующего проекта, вы должны вручную удалить каталог project/boot/scala-{version} перед выполнением 'sbt update (SBT не извлекает дополнительные артефакты источника, если основная банда уже присутствует).

Как только у вас есть пользовательский sbt.boot.properties файл, есть и другие способы его доставки в пусковую установку SBT.

См. вопрос SO как мне получить sbt для использования локального репозитория прокси-сервера maven (Nexus)?"

Ответ 2

Основываясь на комментариях Майкла Слинна: ​​

Если вы используете sbt 0.11.x и выше, используйте следующую команду:

sbt update-sbt-classifiers

Ответ 3

Две части информации.

(1) Документация SBT http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Library-Management.html

и я цитирую: "Чтобы получить определенные классификаторы для всех зависимостей транзитивно, запустите задачу updateClassifiers. По умолчанию это разрешает все артефакты с источниками или классификатором javadoc."

Это означает, что вам не нужно ничего делать, но вы можете сделать его явным и добавить в него build.sbt: transitiveClassifiers: = Seq ( "sources", "javadoc" )

Чтобы получить исходные данные, загруженные SBT, выполните следующие действия:

"updateClassifiers"

(2) Если вы работаете с Eclipse scala IDE - скорее всего, вы являетесь разработчиком плагинов для Eclipse/Netebeans, намного более активным для eclipse - тогда вы должны настроить свой облик, чтобы узнать источники, если вы сделайте следующее. EclipseKeys.withSource: = true Вот документация, которую вы должны прочитать, https://github.com/typesafehub/sbteclipse/wiki/Using-sbteclipse