Comment exécuter la commande d'assemblage sbt sans tests à partir de la ligne de commande?

89

J'ai lu des questions: ceci et cela . Ils suggèrent de modifier le fichier sbt. Mais je veux courir sbt clean assemblysans tests et ne pas modifier les fichiers de construction sbt. Est-ce possible avec sbt? Dans maven il y a un -DskipTest=trueparamètre, y a-t-il de l'analogique pour sbt?

Cerise
la source
basé sur ceci et cela, et la documentation officielle, je dirais non. Soit vous devez modifier les fichiers de construction, soit les exécuter packagecar cela n'exécute aucun test.
DB5 du

Réponses:

150

Pour toutes les propriétés que vous devez modifier sur la ligne de commande, ajoutez-les au début de "set" et mettez-les entre guillemets.

Exemple pour Windows:

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

Exemple pour Mac:

sbt 'set test in assembly := {}' clean assembly
kshakir
la source
Édité. Les citations sont assez différentes dans Windows, alors j'ai essayé de rendre cette réponse suffisamment générique pour que les gens commencent simplement en utilisant des guillemets doubles pour cette réponse spécifique. En général, le principe est que vous voulez passer un seul argument, souvent sans échappatoire, à sbtl'ensemble de votre «ensemble…». Notez également que vous pouvez transmettre plusieurs instructions «set» en tant qu'arguments de ligne de commande séparés ou par un point-virgule séparant les instructions dans un argument entre guillemets.
kshakir
1
Sur un Mac, sbt 0.13.7 J'obtiens <set>: 1: erreur: introuvable: assemblage de valeur [erreur] Erreur de type dans l'expression "Est-ce vraiment un problème de 13,7 contre 13,8?
Metropolis
12
Ce n'est peut-être pas un sbtproblème de version, mais dû à un ancien sbt-assembly. Essayez le plus universel "set test in Test := {}". Quelle version de sbt-assemblyest répertoriée dans votre pluginsrépertoire? Les documents pour les versions 0.11.2 et 0.13.0 indiquent tous deux d'utiliser la même syntaxe ci-dessus dans le build.sbt. Mais je suppose que lorsque vous utilisez l'ancien plugin, ce paramètre peut ne pas être disponible via la console sbt, et donc pas sur la ligne de commande.
kshakir
5
sbt 'set test in assembly := {}' clean assemblyexécute toujours les spécifications scalatest sur macos /sbt 1.0
prieragupd
2
Si vous faites cela à l' intérieur d' une sbtinvite, les exécuter en trois tâches individuelles, sans guillemets: set test in Test := {}, clean,assembly
MCW