sbteclipse:eclipse 找不到托管依赖项

Posted

技术标签:

【中文标题】sbteclipse:eclipse 找不到托管依赖项【英文标题】:sbteclipse: Managed dependencies not found by eclipse 【发布时间】:2012-09-17 21:02:33 【问题描述】:

我创建了一个 sbt 项目。在命令行调用 sbt compile 效果很好:

$:[...]/Scala-Parser$ sbt compile
[info] Loading global plugins from /home/[...]/.sbt/plugins
[info] Loading project definition from [...]/Scala-Parser/project
[info] Set current project to MyProject (in build file:[...]/Scala-Parser/)
[info] Updating file:/home/heinzi/ftanml/Scala-Parser/default-d86d09...
[info] Resolving org.scala-lang#scala-library;2.9.2 ...
[info] Done updating.
[info] Compiling 19 Scala sources to [...]/Scala-Parser/target/scala-2.9.2/classes...
[warn] there were 3 unchecked warnings; re-run with -unchecked for details
[warn] one warning found
[success] Total time: 7 s, completed 26.09.2012 11:01:18

外部库不会添加到 lib_managed 目录,而是添加到 ~/.ivy2。尽管如此,在我的类中编译和使用依赖项工作正常。 创建一个eclipse项目也可以正常工作:

$:[...]/Scala-Parser$ sbt eclipse
[info] Loading global plugins from /home/[...]/.sbt/plugins
[info] Loading project definition from [...]/Scala-Parser/project
[info] Set current project to MyProject (in build file:[...]/Scala-Parser/)
[info] About to create Eclipse project files for your project(s).
[info] Successfully created Eclipse project files for project(s):
[info] MyProject

但是 Eclipse 无法编译该项目,因为它缺少一个应该由托管库提供的包(即未找到 scalatest)。为什么这个托管依赖没有添加到eclipse中?

这里是我的项目定义文件:

来源分别在 src/main/scala 中的 src/test/scala

build.sbt

名称 := "我的项目"

版本 := "0.1"

scalaVersion := "2.9.2"

项目/plugins.sbt

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0")

项目/build.sbt

libraryDependencies += "org.scalatest" %% "scalatest" % "1.8" % "test"

我正在使用 SBT 0.11.3 和 Eclipse Indigo。

编辑:

从 Eclipse 创建的 .classpath 如下所示:

<classpath>
  <classpathentry output="target/scala-2.9.2/classes" path="src/main/scala" kind="src"></classpathentry>
  <classpathentry output="target/scala-2.9.2/classes" path="src/main/java" kind="src"></classpathentry>
  <classpathentry output="target/scala-2.9.2/test-classes" path="src/test/scala" kind="src"></classpathentry>
  <classpathentry output="target/scala-2.9.2/test-classes" path="src/test/java" kind="src"></classpathentry>
  <classpathentry kind="con" path="org.scala-ide.sdt.launching.SCALA_CONTAINER"></classpathentry>
  <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"></classpathentry>
  <classpathentry path="bin" kind="output"></classpathentry>
</classpath>

edit2:

我现在发现控制台上的“sbt test”也不起作用。所以我认为这不是 sbteclipse 的问题,而是如何处理测试用例的依赖关系。我据此提出了一个新问题,因为我提出这个问题的假设是错误的:sbt: Add dependency on scalatest library. Where?

【问题讨论】:

sbt eclipse 是否在您的项目目录中创建了.classpath 文件?如果是,该文件是否包含 scalatest 的条目? 是的,它创建了 .classpath,不,该文件不包含 scalatest。我编辑了问题以包含 .classpath 文件内容。 【参考方案1】:

你应该添加

libraryDependencies += "org.scalatest" %% "scalatest" % "1.8" % "test"

在根目录中构建.sbt 以被识别为依赖项。

【讨论】:

以上是关于sbteclipse:eclipse 找不到托管依赖项的主要内容,如果未能解决你的问题,请参考以下文章

sbt eclipse 错误评估任务 scalaoptions 错误

如何使用 sbt-eclipse 创建项目的 Eclipse 项目文件?

如何让 Eclipse 识别来自 SBT 的依赖项

使用 Scala IDE 中的 SBT

为啥我在操作菜单上找不到“调试托管内存”?

为啥我在操作菜单上找不到“调试托管内存”?