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

lbo*_*lar 3 scala jar sbt sbt-assembly

我已经尝试了很多与此主题相关的解决方案.最重要的是,

找不到sbt程序集命令

看起来最相关,但没有解决它.

我正在使用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"
  )
Run Code Online (Sandbox Code Playgroud)

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")
Run Code Online (Sandbox Code Playgroud)

项目结构

root
  |
  src
  target
  project
    |
    build.sbt
    assembly.sbt
Run Code Online (Sandbox Code Playgroud)

在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]
Run Code Online (Sandbox Code Playgroud)

我正在使用Intellij但是从终端运行sbt.
我在Mac OSX上.
我最初下载sbt并从他们的站点安装,正常安装.我删除并尝试从macports安装,没有区别.
我在build.sbt设置中有scala版本,但删除它因为我收到错误并且读取2.11.x不能与sbt一起使用.这阻止了错误,但我仍然有装配问题.

编辑:

我不确定build.sbt在这个结构中的位置.之前我在根目录中.在下面罗马的建议中,我已经把它移回那里,但是我收到完全相同的错误.

Rom*_*man 10

拉1级你的build.sbt.它应该驻留在项目根目录中,而不是它project.

此外,它也可以build.sbtproject文件夹中,这意味着另一件事.阅读组织构建文档以获得一些见解.

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/"
)
Run Code Online (Sandbox Code Playgroud)

然后,再向文件root/project夹添加两个文件:

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

sbt.version=0.13.7
Run Code Online (Sandbox Code Playgroud)

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

addSbtPlugin("com.eed3si9n"       %  "sbt-assembly"            % "0.12.0")
Run Code Online (Sandbox Code Playgroud)

现在,删除你的root/project/assembly.sbt文件(虽然它可以代替它plugins.sbt,但我们只是尝试 - 这个配置总是适合我).

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

root
  |
  build.sbt
  src
  project
    |
    plugins.sbt
    build.properties
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

我犯的错误是从 myproject/project 文件夹运行 sbt 程序集。尝试从顶部项目文件夹运行相同的命令。从 C:\Users* \IdeaProjects\untitled9 运行,而不是从 C:\Users* \IdeaProjects\untitled9\project运行