Wie kann der Befehl sbt Assembly ohne Tests über die Befehlszeile ausgeführt werden?

88

Ich habe Fragen gelesen: dies und das . Sie schlagen vor, die sbt-Datei zu ändern. Aber ich möchte sbt clean assemblyohne Tests laufen und sbt Build-Dateien nicht ändern. Ist es mit sbt möglich? In Maven gibt es -DskipTest=trueParameter, gibt es Analog für sbt?

Kirsche
quelle
basierend auf diesem und jenem und der offiziellen Dokumentation würde ich nein sagen. Entweder müssen Sie die Build-Dateien ändern oder ausführen, packageda dadurch keine Tests ausgeführt werden.
DB5

Antworten:

149

Stellen Sie für alle Eigenschaften, die Sie in der Befehlszeile ändern müssen, "set" voran und setzen Sie sie in Anführungszeichen.

Beispiel für Windows:

sbt "set test in assembly := {}" clean assembly

Beispiel für Mac:

sbt 'set test in assembly := {}' clean assembly
kshakir
quelle
Bearbeitet. In Windows ist das Zitieren ganz anders. Versuchen Sie daher, diese Antwort so allgemein zu gestalten, dass die Leute damit beginnen, indem Sie für diese spezifische Antwort nur doppelte Anführungszeichen verwenden. Im Allgemeinen besteht das Prinzip darin, dass Sie ein einzelnes Argument, das oft nicht entkommen ist, an sbtIhre gesamte "Menge ..." weitergeben möchten . Beachten Sie auch, dass Sie mehrere "set" -Anweisungen als separate Befehlszeilenargumente oder durch Semikolon übergeben können, indem Sie die Anweisungen innerhalb eines Anführungszeichens trennen.
Kshakir
1
Auf einem Mac, sbt 0.13.7 erhalte ich <set>: 1: Fehler: nicht gefunden: Wert Assembly [Fehler] Tippfehler im Ausdruck "Ist dies wirklich ein Problem von 13.7 vs 13.8?
Metropolis
12
Das ist vielleicht kein sbtVersionsproblem, aber aufgrund eines älteren sbt-assembly. Versuchen Sie das universellere "set test in Test := {}". Welche Version von sbt-assemblyist in Ihrem pluginsVerzeichnis aufgeführt? Die Dokumentation für beide 0.11.2 & 0.13.0 beide etwa auf die gleiche oben Syntax innerhalb der build.sbt. Aber ich vermute vielleicht, dass bei Verwendung des älteren Plugins die Einstellung möglicherweise nicht über die sbt-Konsole und daher nicht in der Befehlszeile verfügbar ist.
Kshakir
5
sbt 'set test in assembly := {}' clean assemblyläuft noch skalatest Specs auf Macos /sbt 1.0
Prayagupd
2
Wenn Sie dies innerhalb einer tust sbtAufforderung führen sie als drei einzelne Aufgaben, ohne Zitate: set test in Test := {}, clean,assembly
mcw