Как использовать sbt-eclipse для создания файлов проекта Eclipse проекта?

Я выполнил официальную документацию, чтобы настроить плагин в моем проекте sbt:

  • Добавлен addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.5.0") в ~/.sbt/plugins/plugins.sbt файл
  • cd ed для проекта и выполнил sbt
  • В sbt-оболочке введите 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]        ^

Ответы

Ответ 1

Я использую sbt 0.13.5.

$ sbt --version
sbt launcher version 0.13.5

В пустой каталог, выполненный 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, чтобы гарантировать, что существует команда 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.

Следуя документации, я открыл ~/.sbt/0.13/plugins/plugins.sbt, чтобы она была следующей:

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

С плагином в файле я уволил reload в оболочке sbt, чтобы загрузить изменения.

> 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

Как вы видите, плагин был правильно загружен и сгенерировал файлы. Выполните шаги, и вы должны установить плагин без проблем.

Ответ 2

Для sbt 0.13 и up

Добавьте sbteclipse в свой файл определения плагина. Вы можете использовать либо:

  • глобальный файл (для версии 0.13 и выше) в ~/.sbt/0.13/plugins/plugins.sbt

  • файл, зависящий от проекта, в PROJECT_DIR/project/plugins.sbt

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

Ответ 3

Предупреждение в строках 2-4 говорит вам переместить папку плагинов с ~/.sbt/plugins/plugins.sbt на ~/.sbt/0.13/plugins/plugins.sbt.

Ответ 4

Решение

Просто обновляйте до последнего sbt (sbt-0.13.9-1.noarch в моем случае) с помощью оригинальной документации (для F23 в моем случае):

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

Исходная проблема

Похоже, проблема (по крайней мере) sbt-0.13.1 в (по крайней мере) Linux.

Я использовал пакеты по умолчанию для 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

И нет перестановки (~/.sbt/plugins/plugins.sbt, ~/.sbt/0.13/plugins/plugins.sbt, PROJECT_DIR/project/plugins.sbt,...) с выполненными настройками конфигурации.

Ответ 5

Я использую sbt 0.13.13, и я использовал приведенные ниже шаги для загрузки sbtecipse. Пойдите в свой проект. под введите описание изображения здесь

И затем перейдите в папку проекта из командной строки и sbt

Ответ 6

Eclipse не имеет плагина sbt, хотя sbt имеет плагин eclipse

это обходной путь, но не правильное решение.

это означает, что eclipse не понимает build.sbt, как это делает для pom.xml или build.gradle, поэтому, если мы изменим зависимость в нашем проекте eclipse в файле build.sbt, eclipse не поймет его и не изменит зависимость в проекте зависимости. Так что вы должны делать следующие шаги каждый раз, когда вы изменяете любую зависимость.

Обходной путь заключается в следующем (я использовал Windows)

Шаг 1: Загрузите и установите sbt с https://www.scala-sbt.org/release/docs/Setup.html для Windows, это довольно просто https://piccolo.link/sbt-1.2.8.msi довольно просто вперед

Шаг 2. Создайте папку, скажем, 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 как → D:\sbt\spark\src\main

Шаг 3: Откройте CMD/PowerShell, перейдите в D:\sbt\edge и запустите "sbt package"

Шаг 4: Зайдите в .sbt в вашем домашнем каталоге и в папку плагинов правильной версии в моем случае C:\Users\xxxx.sbt\1.0\plugins, если у вас уже есть файл plugins.sbt, добавьте следующую строку addSbtPlugin (" com.typesafe.sbteclipse "%" sbteclipse-plugin "%" 5.2.4 "), если нет, создайте и добавьте строку.

Шаг 5: Вернитесь к CMD/PowerShell, запустите sbt eclipse. Это создаст необходимые файлы для проекта затмения. Шаг 6. Откройте рабочее пространство Eclipse и импортируйте этот проект как существующий.

Ответ 7

Я смог избавиться от одной и той же ошибки, понизив формат sbteclipse-plugin с 4.0 до 2.5.0