如何在Scala IDE中将源附加到SBT托管依赖项?

Chr*_*rle 28 scala ivy sbt ivyde scala-ide

我正在使用Scala IDE 2.0.1和SBT 0.11.2从Akka 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"
Run Code Online (Sandbox Code Playgroud)

如你所见,没有什么了不起的.

现在,我如何告诉Eclipse将工件与源分类器一起用于akka-actor库?

在SBT中,我可以使用update-classifiers将源代码和Javadocs下载到Ivy存储库,但即使我在从sbteclipse插件运行eclipse命令之前执行此操作,Eclipse仍然不知道源代码.当然,我可以手动执行此操作,但这对于更多库来说不能很好地扩展.

我还尝试将IvyDE插件与deliver-local命令一起使用.虽然这集成了依赖关系管理,但它似乎对源代码没有帮助.

有线索吗?

编辑:这是从deliver-local生成的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>
Run Code Online (Sandbox Code Playgroud)

我是Ivy的新手,所以这并没有告诉我多少.我只是觉得它提到了源代码和javadoc,但不知怎的,IvyDE并没有提起它.

kir*_*uku 35

你可以放

EclipseKeys.withSource := true
Run Code Online (Sandbox Code Playgroud)

对你来说build.sbt,这让sbteclipse下载所有资源并让它们在Eclipse中可以访问.请注意,这将从所有已配置的依赖项下载所有源.我不知道如何告诉sbt只下载单个依赖项的源代码.

  • 由于我需要进行一些研究和反复试验才能实现这一目标,因此需要做的是:在`Build.sbt`中,添加import`import com.typesafe.sbteclipse.plugin.EclipsePlugin._`.在调用`play.Project.setting(...)`时,添加`EclipseKeys.withSource:= true`.执行`play update`,然后执行`play eclipse`.切换到Eclipse,选择项目并按F5. (5认同)
  • 使用`eclipse with-source = true`命令也应该可以正常工作.如果没有下载某些依赖项,那可能是因为您曾在没有适当解析程序的情况下请求它们.从`〜/ .ivy /`目录中删除`exclude_classifiers`缓存文件对我有所帮助. (4认同)

ssc*_*zio 9

最后,我找到了一个解决方案,让sbt下载源代码并告诉Eclipse在哪里找到它们.

添加build.sbt:

EclipseKeys.withSource := true
Run Code Online (Sandbox Code Playgroud)

然后运行:

rm -rf  ~/.ivy2/cache/

sbt update-classifiers

sbt eclipse
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果你已经在ivy中下载了依赖项,那么你将它们放在缓存中,你将无法下载它们的源代码.


Chr*_*rle 1

好吧,我已经放弃了,回到了 NetBeans 7.1.2 + Scala 插件 + Maven。这种组合集成得更好,开箱即用,无需修改。