SBT程序集无法运行(不是有效命令)

时间:2016-03-23 18:39:22

标签: scala jar sbt sbt-assembly

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

sbt assembly command not found

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

我正在使用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不能与sbt一起使用。这阻止了错误,但我仍然有装配问题。

编辑:

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

3 个答案:

答案 0 :(得分:8)

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

此外,project文件夹中也可以build.sbt,这意味着另外一件事。阅读Organizing Build文档以获得一些见解。

UPD:正如@marios建议的那样,你也可以将解析器放到build.sbt中。此外,为您的构建设置SNAPSHOT版本也很重要。您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 而不是plugins,但我们只是尝试一下 - 这种配置对我来说总是有效。“ / p>

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

sbtassembly.AssemblyPlugin

重新加载sbt并尝试@Component({ ... template: '<child [myCallback]="theCallback"></child>', directives: [ChildComponent] }) export class ParentComponent{ public theCallback(){ ... } } @Component({...}) export class ChildComponent{ //This will be bound to the ParentComponent.theCallback @Input() public myCallback: Function; ... } 命令。你应该在那里看到COUNTESS This young gentlewoman had a father,--O, that`

答案 1 :(得分:0)

即使尝试了上述解决方案(如果存在问题), 他们尝试重新启动计算机 整整整整一整天都在为我解决了这个问题。

答案 2 :(得分:0)

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

我正在做的错误是从myproject / project文件夹运行sbt程序集。 尝试从顶层项目文件夹运行相同的命令。 从C:\ Users * \ IdeaProjects \ untitled9运行 不是来自C:\ Users * \ IdeaProjects \ untitled9 \ project