Как я могу позволить sbt загрузить исходный код scala-library.jar? - PullRequest
14 голосов
/ 18 декабря 2010

Я знаю, что если я добавлю 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.

Ответы [ 3 ]

11 голосов
/ 18 декабря 2010

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


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

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

  1. Создать альтернативуфайл конфигурации для вашей SBT-программы запуска.
  2. Заставьте SBT-программу использовать его.

Подробно описаны следующие шаги:

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

Вот как выглядит мой файл сценария sbt:

#!/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" \
     "$@"

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

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

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

0 голосов
/ 25 июля 2015

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

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

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

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

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

"updateClassifiers"

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

0 голосов
/ 24 июня 2014

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

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

sbt update-sbt-classifiers
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...