如何安装源SBT斯卡拉IDE管理的依赖?(How to attach sources to SBT

2019-06-24 05:34发布

我使用Scala的IDE 2.0.1和SBT 0.11.2开始与阿卡2.0.1。 我build.sbt看起来是这样的:

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"

正如你所看到的,没有什么壮观。

现在,我怎么能告诉Eclipse使用与来源分类神器的阿卡,演员库?

在SBT,我可以使用更新分类器源和Javadoc下载到常春藤库,但即使我从sbteclipse插件运行日食命令之前这样做,那么Eclipse的仍然不知道来源。 当然,我可以手动做到这一点,但是这并不为更多的图书馆很好地扩展。

我也曾尝试使用与提供本地命令IvyDE插件。 虽然这种集成了依赖管理,它似乎并没有帮助的来源。

任何线索?

编辑:这是提供本地生成的ivy.xml:

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

我是新来的常春藤,所以这并没有告诉我很多。 我的数字,它提到的来源和Javadoc,但不知何故IvyDE不把它捡起来。

Answer 1:

你可以把

EclipseKeys.withSource := true

build.sbt ,它可以让sbteclipse下载所有来源,使他们在Eclipse中访问。 请注意,这会从所有配置的依赖性下载所有来源。 我不知道如何告诉SBT下载只对单一依赖的来源。



Answer 2:

最后,我找到了一个解决方案,让SBT下载源代码,并告诉Eclipse在哪里可以找到他们。

添加在build.sbt:

EclipseKeys.withSource := true

然后运行:

rm -rf  ~/.ivy2/cache/

sbt update-classifiers

sbt eclipse

怪异的是,如果你已经下载了常春藤的依赖关系,你有他们在缓存中,您将无法下载来源为他们。



Answer 3:

我设法终于得到这个工作。

我不得不使用一个外部ivy设置文件:

<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。 在本地播放存储库安装没有来源或的Javadoc英寸

这让我源的附件大部分在我的依赖罐子的时候IvyDE在Eclipse中解决。



Answer 4:

我发现它更容易给IvyDE和SBT不同常春藤缓存目录。 是的,它需要更多的空间,但默认情况下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>

指向我的本地关系服务器,so'll你需要修改它为您的环境。



Answer 5:

好吧,我已经放弃了这一点,并返回的NetBeans 7.1.2 +斯卡拉插件+ Maven的。 这种组合是更好地集成,并开箱无修修补补。



文章来源: How to attach sources to SBT managed dependencies in Scala IDE?