SBT 程序集不工作(不是有效命令)

SBT Assembly not working (not a valid command)

我已经尝试了很多我能找到的与这个主题相关的解决方案。最重要的是,

看起来最相关,但这并没有解决问题。

我正在使用 sbt 13.7

build.sbt:

lazy val commonSettings = Seq(
  organization := "com.example",
  version := "0.1.0"
)

lazy val app = (project in file(".")).
  settings(commonSettings: _*).
  settings(
    name := "fat-jar-test"
  )

assembly.sbt:

resolvers += Resolver.url("bintray-sbt-plugins", url("http://dl.bintray.com/sbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.11.2")

项目结构

root
  |
  src
  target
  project
    |
    build.sbt
    assembly.sbt

在sbt中我编译成功,我可以打包成功,但是当我运行汇编命令时我得到:

[error] Not a valid command: assembly
[error] Not a valid project ID: assembly
[error] Expected ':' (if selecting a configuration)
[error] Not a valid key: assembly
[error] assembly
[error]

我正在使用 Intellij,但 运行正在从终端使用 sbt。
我在 Mac OSX.
我最初是从他们的站点下载 sbt 并安装的,正常安装。我删除并尝试从 macports 安装,没有区别。
我在 build.sbt 设置中有 scala 版本,但由于我收到错误并阅读了 2.11.x does not work with sbt,所以删除了它。这阻止了错误,但我仍然有装配问题。

编辑:

我不确定 build.sbt 在此结构中的位置。在我把它放在根目录之前。根据下面 Roman 的建议,我已将其移回那里,但很遗憾,我收到了完全相同的错误。

将您的 build.sbt 提升 1 级。它应该驻留在项目根目录中,而不是 project.

也有可能在project文件夹中有build.sbt,这意味着不同的东西。阅读 Organizing Build 文档以获得一些见解。

UPD:正如@marios 所建议的,您能否也将解析器放入您的 build.sbt。此外,为您的构建设置 SNAPSHOT 版本也很重要。您的 build.sbt 的全部内容应如下所示:

scalaVersion in ThisBuild := "2.11.7"

lazy val commonSettings = Seq(
  organization := "com.example",
  version := "0.1.0-SNAPSHOT"
)

lazy val app = (project in file(".")).
  settings(commonSettings: _*).
  settings(
    name := "fat-jar-test"
  ).
  enablePlugins(AssemblyPlugin)

resolvers in Global ++= Seq(
  "Sbt plugins"                   at "https://dl.bintray.com/sbt/sbt-plugin-releases",
  "Maven Central Server"          at "http://repo1.maven.org/maven2",
  "TypeSafe Repository Releases"  at "http://repo.typesafe.com/typesafe/releases/",
  "TypeSafe Repository Snapshots" at "http://repo.typesafe.com/typesafe/snapshots/"
)

然后,将另外两个文件添加到 root/project 文件夹:

root/project/build.properties 包含一行:

sbt.version=0.13.7

root/project/plugins.sbt 还包含一行:

addSbtPlugin("com.eed3si9n"       %  "sbt-assembly"            % "0.12.0")

现在,删除您的 root/project/assembly.sbt 文件(虽然用它代替 plugins.sbt 没问题,但让我们试试 - 这个配置对我来说总是有效)。

现在,您的项目布局应如下所示:

root
  |
  build.sbt
  src
  project
    |
    plugins.sbt
    build.properties

重新加载 sbt 并尝试 plugins 命令。你应该在那里看到 sbtassembly.AssemblyPlugin

我也遇到了同样的问题。 我有正确的文件和文件夹结构。

我犯的错误是 运行从 myproject/project 文件夹中安装了 sbt 程序集。 从顶级项目文件夹尝试 运行ning 相同的命令。 运行 来自 C:\Users*\IdeaProjects\untitled9 不是来自 C:\Users*\IdeaProjects\untitled9\project