2016-03-23 8 views
0

Ich habe viele Lösungen ausprobiert, die ich zu diesem Thema finden konnte. Vor allem von ihnen,SBT Assembly funktioniert nicht (kein gültiger Befehl)

sbt assembly command not found

sahen die meisten im Zusammenhang, aber das hat es nicht lösen.

Ich bin mit 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") 

Projektstruktur

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

In sbt ich erfolgreich kompilieren, Ich kann succ einpacken esfully, aber wenn ich Montage Befehl ausführen ich:

[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] 

ich IntelliJ verwende aber sbt von Terminal läuft.
Ich bin auf Mac OSX.
Ich habe ursprünglich sbt heruntergeladen und installiert von ihrer Website, normale Installation. Ich entfernte und versuchte, von Macports zu installieren, keinen Unterschied.
Ich hatte scala Version in build.sbt Einstellung, aber entfernt, weil ich Fehler bekam und lesen Sie die 2.11.x funktioniert nicht mit sbt. Das hat Fehler gestoppt, aber ich habe immer noch Montageprobleme.

EDIT:

Ich war die Platzierung von build.sbt in dieser Struktur nicht sicher. Vorher hatte ich es im Root-Verzeichnis. Als ich Roman unten vorgeschlagen habe, habe ich ihn dorthin zurückgebracht, aber leider erhalte ich genau den gleichen Fehler.

+0

Was 'plugins' Befehl zeigt? – Roman

+0

sbt.plugins.IvyPlugin: enabled in App sbt.plugins.JvmPlugin: enabled in App sbt.plugins.CorePlugin: enabled in App sbt.plugins.JUnitXmlReportPlugin: enabled in app – lbollar

Antwort

3

Ziehen Sie eine Ebene höher Ihre build.sbt. Es sollte sich im Projektstamm befinden, nicht project.

Es ist auch möglich, build.sbt in project Ordner zu haben, es bedeutet eine andere Sache. Lesen Sie Organizing Build Dokument für einige Einblicke.

UPD: Wie @marios vorgeschlagen hat, können Sie auch Resolver in Ihre build.sbt einfügen. Außerdem ist es wichtig, die SNAPSHOT-Version für Ihr Build festzulegen. Der gesamte Inhalt Ihrer build.sbt sollte die folgenden:

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/" 
) 

Dann werden zwei weitere Dateien root/project Ordner hinzufügen:

root/project/build.properties enthält eine einzige Zeile:

sbt.version=0.13.7 

root/project/plugins.sbt enthält auch eine einzelne Linie:

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

Jetzt entfernen Sie Ihre root/project/assembly.sbt Datei (obwohl es in Ordnung ist, es anstelle plugins.sbt zu haben, aber lasst uns einfach versuchen - diese Konfiguration funktioniert immer für mich).

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

Reload sbt und versuchen plugins Befehl:

Nun sollte Ihr Projekt Layout die folgenden sein. Sie sollten sbtassembly.AssemblyPlugin dort sehen.

+0

Das hatte ich versucht, und verändern es einfach zurück zu diesem. Genau der gleiche Fehler. Ich werde die Frage bearbeiten, um dies zu reflektieren. – lbollar

+0

Diese Antwort ist sehr nahe zu korrigieren, also möchte ich keine neue Adresse hinzufügen. Ihre build.sbt-Dateien müssen sich in Ihrem Stammverzeichnis befinden. Die Resolver-Anweisungen sollten sich auch in der Datei build.sbt und nicht in der sbt-Datei des Plugins befinden. – marios

+0

@marios Ich habe das auch versucht, und auf Ihren Vorschlag hin habe ich es in build.sbt wieder eingefügt. Bisher hat keine mögliche Kombination funktioniert und ich bekomme denselben Fehler. Roman bat um die Ausgabe von Plugins in Kommentaren unter der Hauptfrage. Daraus ergibt sich, dass das Plugin nicht aufgelistet ist. – lbollar