Как подключить источники к управляемым зависимостям SBT в Scala IDE?

Я использую Scala IDE 2.0.1 и SBT 0.11.2 для запуска с Akka 2.0.1. Мой build.sbt выглядит так:

<code>name := "akka"

version := "0.1"

scalaVersion := "2.9.2"

resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"

libraryDependencies += "com.typesafe.akka" % "akka-actor" % "2.0.1"
</code>

Как видите, ничего впечатляющего.

Теперь, как я могу сказать Eclipse использовать артефакт с классификатором источников для библиотеки akka-actor?

В SBT я могу использовать классификаторы обновлений для загрузки исходников и Javadoc в репозиторий Ivy, но даже если я сделаю это до запуска команды eclipse из плагина sbteclipse, Eclipse по-прежнему не знает источников. Конечно, я мог бы сделать это вручную, но это не подходит для большего количества библиотек.

Я также пытался использовать плагин IvyDE с командой delivery-local. Хотя это интегрирует управление зависимостями, оно, похоже, не помогает с источниками.

Есть какие-нибудь подсказки?

Edit: Это файл ivy.xml, сгенерированный из файла delivery-local:

<code><?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="default" module="akka_2.9.2" revision="0.1" status="release" publication="20120506225613">
    <description>
    akka
    </description>
</info>
<configurations>
    <conf name="compile" visibility="public" description=""/>
    <conf name="runtime" visibility="public" description="" extends="compile"/>
    <conf name="test" visibility="public" description="" extends="runtime"/>
    <conf name="provided" visibility="public" description=""/>
    <conf name="optional" visibility="public" description=""/>
    <conf name="sources" visibility="public" description=""/>
    <conf name="docs" visibility="public" description=""/>
    <conf name="pom" visibility="public" description=""/>
</configurations>
<publications>
    <artifact name="akka_2.9.2" type="pom" ext="pom" conf="pom"/>
    <artifact name="akka_2.9.2" type="jar" ext="jar" conf="compile"/>
    <artifact name="akka_2.9.2" type="src" ext="jar" conf="sources" e:classifier="sources"/>
    <artifact name="akka_2.9.2" type="doc" ext="jar" conf="docs" e:classifier="javadoc"/>
</publications>
<dependencies>
    <dependency org="org.scala-lang" name="scala-library" rev="2.9.2" conf="compile->default(compile)"/>
    <dependency org="com.typesafe.akka" name="akka-actor" rev="2.0.1" conf="compile->default(compile)"/>
    <exclude org="org.scala-lang" module="scala-library" artifact="*" type="jar" ext="*" matcher="exact"/>
    <exclude org="org.scala-lang" module="scala-compiler" artifact="*" type="jar" ext="*" matcher="exact"/>
    <override org="org.scala-lang" module="scala-library" matcher="exact" rev="2.9.2"/>
    <override org="org.scala-lang" module="scala-compiler" matcher="exact" rev="2.9.2"/>
</dependencies>
</ivy-module>
</code>

Я новичок в Айви, так что это мне мало что говорит. Я просто полагаю, что в нем упоминаются источники и javadocs, но почему-то IvyDE не подхватывает его.

 oers08 мая 2012 г., 13:10
В настройках своего проекта нажмите на контейнер IvyDE ClassPath и выберите «Редактировать». Из вашего ivy.xml у вас должна быть компиляция, источники проверены (как минимум).
 Christian Schlichtherle07 мая 2012 г., 12:27
Я только что установил настройки по умолчанию после установки плагина. Я также пытался поставить галочку «Автоматически отображать артефакты jar с уникальным исходным артефактом» и «Автоматически отображать артефакты jar с уникальным артефактом javadoc», но безуспешно - даже после закрытия и повторного открытия проекта.
 oers07 мая 2012 г., 12:50
а у контейнера ivde classpath для проекта проверены все важные конфигурации?
 oers07 мая 2012 г., 08:19
не могли бы вы прикрепить скриншоты настроек вашего ivyde?
 Christian Schlichtherle08 мая 2012 г., 13:02
Как мне это проверить?

Ответы на вопрос(5)

Решение Вопроса

я отказался от этого и вернулся к NetBeans 7.1.2 + плагин Scala + Maven. Эта комбинация намного лучше интегрирована и работает без коробок.

что IvyDE и sbt проще использовать разные каталоги ivy-кеша. Да, это занимает больше места, но sbt по умолчанию не загружает источники. И как только sbt загрузит кеш без исходников, IvyDE не добавит их. Вы можете сказать sbt, что нужно их извлечь, но для меня проще просто использовать больше дискового пространства и использовать два разных кэша.

Я делаю это, оставив sbt по умолчанию и установив IvyDE для использования этого файла в «Предпочтения»> «Плющ»> вкладка «Настройки»> «Файл настроек плюща»:

<ivysettings>

    <settings defaultResolver="nexus" />

    <property
        name="nexus-public"
        value="http://localhost:8081/nexus/content/groups/public" />

    <resolvers>

        <ibiblio
            name="nexus"
            m2compatible="true"
            root="${nexus-public}" />
    </resolvers>

    <caches defaultCacheDir="${user.home}/.ivy2eclipse" />

</ivysettings>

Это указывает на мой локальный сервер Nexus, поэтому вам нужно будет изменить его для вашей среды.

 Christian Schlichtherle05 мар. 2013 г., 20:47
Спасибо, но, как я уже сказал, я разочаровался в sbt + Ivy и с удовольствием использую Maven.

позволяющее sbt скачать исходники и сообщить Eclipse, где их найти.

Добавить в build.sbt:

EclipseKeys.withSource := true

Затем беги:

rm -rf  ~/.ivy2/cache/

sbt update-classifiers

sbt eclipse

Странная часть в том, что если вы уже загрузили зависимости в ivy, они есть в кэше, и вы не сможете загрузить исходные коды для них.

Ты можешь поставить

EclipseKeys.withSource := true

на вашbuild.sbt, которая позволяет sbteclipse загружать все источники и делает их доступными в Eclipse. Обратите внимание, что это загрузит все источники из всех настроенных зависимостей. Я понятия не имею, как сказать sbt загружать только исходные коды для одиночных зависимостей.

 notan3xit31 июл. 2013 г., 12:55
Так как мне потребовалось некоторое исследование и метод проб и ошибок, чтобы это заработало, вот что нужно сделать: ВBuild.sbt, добавь импортimport com.typesafe.sbteclipse.plugin.EclipsePlugin._. На звонок вplay.Project.setting(...), ДобавлятьEclipseKeys.withSource := true. Выполнитьplay update с последующимplay eclipse. Перейдите в Eclipse, выберите проект и нажмите F5.
 metasim09 февр. 2014 г., 04:10
Никто не знает, почему это не присоединяет скаладок к scala-library.jar в SCALA_CONTAINER? Источник .jar есть, но не скалярная / javadoc.
 notan3xit31 июл. 2013 г., 16:36
Да, ты прав: этоBuild.scala.
 EECOLOR20 июн. 2014 г., 22:10
Используяeclipse with-source=true команда тоже должна работать. Если определенные зависимости не загружаются, это может быть связано с тем, что вы однажды запросили их без надлежащего распознавателя. Удалениеexclude_classifiers кешировать файлы для этого из~/.ivy/правочник @ помог мне здесь.
 kiritsuku31 июл. 2013 г., 15:17
@ notan3xit: я думаю, что ты имеешь в видуBuild.scala и нетBuild.sbt так как для.sbt файлы, которые вам не нужны при импорте ...

Мне пришлось использовать внешний файл настроек плюща:

<ivysettings>
  <properties environment="env" />
  <settings defaultResolver="play" defaultResolveMode="dynamic" />
  <caches defaultCacheDir="${env.PLAY_HOME}/repository/cache" />
  <resolvers>
    <chain name="play">
      <ibiblio name="typesafe-releases" m2compatible="true" root="http://repo.typesafe.com/typesafe/releases" />
      <ibiblio name="sonatype-oss-releases" m2compatible="true" root="http://oss.sonatype.org/content/repositories/releases" />
      <filesystem name="local-filesystem">
        <ivy pattern="${env.PLAY_HOME}/repository/local/[organization]/[module]/[revision]/ivys/ivy.xml" />
        <artifact pattern="${env.PLAY_HOME}/repository/local/[organization]/[module]/[revision]/[type]s/[module](-[classifier]).[ext]" />
      </filesystem>
      <ibiblio name="central-uk" m2compatible="true" root="http://uk.maven.org/maven2" />
      <ibiblio name="typesafe-snapshots" m2compatible="true" root="http://repo.typesafe.com/typesafe/snapshots" />
      <ibiblio name="sonatype-oss-snapshots" m2compatible="true" root="http://oss.sonatype.org/content/repositories/snapshots" />
    </chain>
  </resolvers>
</ivysettings>

И добавить

externalIvySettings(baseDirectory(_ / "ivysettings.xml"))

моей Build.scala.

Порядок распознавателей в цепочке оказался важным, потому что, если Айви находит банку, но нет источников, она не проверяет другие распознаватели на наличие источников / javadoc. В репозитории при локальной установке Play нет источников или javadoc.

Это дает мне исходные вложения для большинства jar-файлов в моих зависимостях, когда IvyDE разрешается в Eclipse.

Ваш ответ на вопрос