【问题标题】:How to use sbt-eclipse to create Eclipse project files of a project?如何使用 sbt-eclipse 创建项目的 Eclipse 项目文件?
【发布时间】:2014-09-01 11:41:08
【问题描述】:

我跟随the official documentation在我的sbt项目中设置插件:

  1. addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.5.0") 添加到~/.sbt/plugins/plugins.sbt 文件
  2. cded 到一个项目并运行 sbt
  3. 在 sbt shell 中,输入 eclipse

这就是我遇到以下错误的地方:

> eclipse
[error] Not a valid command: eclipse (similar: help, alias)
[error] Not a valid project ID: eclipse (similar: sbteclipse)
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: eclipse (similar: deliver, licenses, clean)
[error] eclipse
[error]        ^

我错过了什么?

提前感谢您能给我的任何帮助。

$ /opt/sbt-0.13.5/bin/sbt
[warn] The global sbt directory is now versioned and is located at /Users/first.last/.sbt/0.13.
[warn]   You are seeing this warning because there is global configuration in /Users/first.last/.sbt but not in /Users/first.last/.sbt/0.13.
[warn]   The global sbt directory may be changed via the sbt.global.base system property.
[info] Loading project definition from /Users/first.last/git/myproject/project
[info] Set current project to myproject (in build file:/Users/first.last/git/myproject/)
> eclipse
[error] Not a valid command: eclipse (similar: help, alias)
[error] Not a valid project ID: eclipse
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: eclipse (similar: deliver, licenses, clean)
[error] eclipse
[error]        ^

【问题讨论】:

  • 我也遇到了这个错误。后来我发现这是因为我在project 目录中。通过cd .. facepalm 解决

标签: eclipse macos scala sbt


【解决方案1】:

我正在使用 sbt 0.13.5。

$ sbt --version
sbt launcher version 0.13.5

empty 目录中执行 sbt about 以检查 build/sbt 设置。

$ sbt about
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Updating {file:/Users/jacek/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to sbteclipse (in build file:/Users/jacek/sandbox/sbteclipse/)
[info] This is sbt 0.13.5
[info] The current project is {file:/Users/jacek/sandbox/sbteclipse/}sbteclipse 0.1-SNAPSHOT
[info] The current project is built against Scala 2.10.4
[info] Available Plugins: sbt.plugins.IvyPlugin, sbt.plugins.JvmPlugin, sbt.plugins.CorePlugin, sbt.plugins.JUnitXmlReportPlugin, net.virtualvoid.sbt.graph.Plugin, com.timushev.sbt.updates.UpdatesPlugin
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.4

目录中没有文件(忽略target,因为它是 sbt 在启动时自动创建的,可以随时删除)。

$ tree
.
`-- target

1 directory, 0 files

然后我使用sbt 运行sbt shell 以确保不存在eclipse 命令。

$ sbt
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Set current project to sbteclipse (in build file:/Users/jacek/sandbox/sbteclipse/)
> eclipse
[error] Not a valid command: eclipse (similar: help, alias)
[error] Not a valid project ID: eclipse (similar: sbteclipse)
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: eclipse (similar: deliver, licenses, clean)
[error] eclipse
[error]        ^

我可以重现您的问题。继续设置插件 - 我确实没有关闭 sbt shell。

按照文档仔细我打开了~/.sbt/0.13/plugins/plugins.sbt,如下所示:

$ cat ~/.sbt/0.13/plugins/plugins.sbt
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.5.0")

使用文件中的插件,我在 sbt shell 中触发了reload 以加载更改。

> reload
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins
[info] Updating {file:/Users/jacek/.sbt/0.13/plugins/}global-plugins...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to sbteclipse (in build file:/Users/jacek/sandbox/sbteclipse/)
> eclipse
[info] About to create Eclipse project files for your project(s).
[info] Updating {file:/Users/jacek/sandbox/sbteclipse/}sbteclipse...
[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Successfully created Eclipse project files for project(s):
[info] sbteclipse

如您所见,插件已正确加载并生成文件。按照步骤操作,您应该可以顺利安装插件。

【讨论】:

  • @Jacek Laskowski,我想了解您在哪个解释器中运行命令。例如,第一个 sbteclipse sbt --version - 它是在 shell 中输入的吗(bashcmd , 等等。)?还是输入sbt?如果我在 shell 中键入sbteclipse,它不在我的路径中(事实上,我认为它在我的文件系统上的任何地方都不是可执行文件)。如果我在sbt 中键入它,我会得到与eclipse 命令相同的错误[error] Not a valid command: sbteclipse。我在 Linux = F23,sbt = 0.13,Scala = 2.10.4。似乎没有其他答案适用于解决我的问题。
  • 我很抱歉使用“奇怪”的提示。固定。
【解决方案2】:

对于 sbt 0.13 及更高版本

将 sbteclipse 添加到您的插件定义文件中。您可以使用:

  1. 位于 ~/.sbt/0.13/plugins/plugins.sbt

  2. 的全局文件(适用于 0.13 及更高版本)
  3. PROJECT_DIR/project/plugins.sbt中的项目特定文件

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

【讨论】:

  • 我无法让方法 #2 起作用。我不确定为什么。 [错误]不是一个有效的命令:eclipse(类似:帮助,别名)[错误]不是一个有效的项目ID:eclipse [错误]预期的':'(如果选择配置)[错误]不是一个有效的键:eclipse(类似:交付,许可证,清理)[错误] eclipse [错误] ^
【解决方案3】:

第 2-4 行的警告告诉您将插件文件夹从 ~/.sbt/plugins/plugins.sbt 移动到 ~/.sbt/0.13/plugins/plugins.sbt

【讨论】:

    【解决方案4】:

    Eclipse 没有 sbt 插件,虽然 sbt 有 eclipse 插件

    这是一种解决方法,但不是正确的解决方案。

    这意味着 eclipse 不像它对 pom.xml 或 build.gradle 那样理解 build.sbt 所以如果我们在 Eclipse 项目的 build.sbt 文件中改变了一个依赖,eclipse 将无法理解它,也不会改变项目依赖中的依赖。所以每次你修改任何依赖时都必须执行以下步骤。

    解决方法如下(我用的是windows

    第一步:https://www.scala-sbt.org/release/docs/Setup.html下载并安装sbt 对于 Windows,它非常简单 https://piccolo.link/sbt-1.2.8.msi 非常简单

    第二步: 创建一个文件夹,比如 D:\sbt\edge 现在在这里创建一个 build.sbt 文件 您可以使用以下内容作为内容,并进行相应更改

    name := "edge"
    version := "0.1"
    scalaVersion := "2.11.8"
    val sparkVersion="2.4.0"
    libraryDependencies ++= Seq(
    "org.apache.spark" %% "spark-core" % sparkVersion,
    "org.apache.spark" %% "spark-sql" % sparkVersion,
    "org.apache.spark" %% "spark-mllib" % sparkVersion % "runtime",
    "org.apache.spark" %% "spark-streaming" % sparkVersion % "provided",
    "org.apache.spark" %% "spark-hive" % sparkVersion % "provided",
    "org.apache.spark" %% "spark-catalyst" % sparkVersion % Test,
    "org.apache.spark" %% "spark-graphx" % sparkVersion,
    "org.apache.spark" %% "spark-repl" % sparkVersion % "provided",
    "org.apache.spark" %% "spark-yarn" % sparkVersion,
    "org.apache.spark" %% "spark-mllib-local" % sparkVersion,
    //"org.apache.spark" %% "spark-streaming-kafka" % "1.6.3",
    //"org.apache.spark" %% "spark-streaming-twitter" % "1.6.3",
    "ch.qos.logback" % "logback-classic" % "1.1.3"
    )
    

    现在创建这些嵌套文件夹 src 和 main like -> D:\sbt\spark\src\main

    第三步: 打开 CMD/PowerShell 进入 D:\sbt\edge 运行“sbt 包”

    第 4 步: 进入主目录中的 .sbt 和正确版本的 plugins 文件夹,在我的情况下为 C:\Users\xxxx.sbt\1.0\plugins 如果您已经有 plugins.sbt 文件,请添加以下行 addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4") 如果没有,请创建并添加该行。

    Step5: 回到 CMD/PowerShell ,运行 sbt eclipse。它将为 eclipse 项目创建必要的文件。 第六步: 打开一个eclipse工作区,将该项目作为现有项目导入。

    【讨论】:

      【解决方案5】:

      解决方案

      使用original documentation(在我的情况下为F23)简单地更新到最新的sbt(在我的情况下是sbt-0.13.9-1.noarch):

      curl https://bintray.com/sbt/rpm/rpm \
        | sudo tee /etc/yum.repos.d/bintray-sbt-rpm.repo
      
      sudo yum install --best --allowerasing sbt
      

      然后从项目目录重试(第一次获取依赖项大约需要 10 分钟):

      sbt eclipse
      

      原来的问题

      这似乎是(至少)Linux 上的(至少)sbt-0.13.1 的问题。

      我在 Linux F23 上使用了默认包:

      • scala-2.10.4-8.fc23.noarch
      • java-1.8.0-openjdk-1.8.0.91-6.b14.fc23.x86_64
      • sbt-0.13.1-8.fc23.noarch

      并且 no 排列(~/.sbt/plugins/plugins.sbt~/.sbt/0.13/plugins/plugins.sbtPROJECT_DIR/project/plugins.sbt,...)与配置选项有效。

      【讨论】:

        【解决方案6】:

        我正在使用 sbt 0.13.13,并使用以下步骤上传 sbtecipse。 转到您的项目。 在

        然后从命令提示符和 sbt

        转到项目文件夹

        【讨论】:

          【解决方案7】:

          要在 scala eclipse 上创建你的 sbt 项目,你需要做一些事情:

          1. 创建一个新项目
          2. 在项目中添加文件夹结构
          3. 进入终端,通过cd命令进入你的项目,
          4. 输入sbt,然后开始下载,然后
          5. 去项目看看,有没有做项目文件夹
          6. 在该文件夹下创建 plugin.sbt 并添加 sbt (addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.13") addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
          7. 然后再次进入终端输入 compile den eclipse
          8. 完成,显示成功消息

          【讨论】:

            【解决方案8】:

            我能够通过将 sbteclipse-plugin 从 4.0 降级到 2.5.0 来消除同样的错误

            【讨论】:

              猜你喜欢
              • 2015-06-20
              • 2013-08-31
              • 2016-10-01
              • 1970-01-01
              • 2012-07-04
              • 2018-11-11
              • 1970-01-01
              • 2014-10-10
              • 1970-01-01
              相关资源
              最近更新 更多