2016-03-26 14 views
0

Ich habe ein SBT-Skelettprojekt zur Bearbeitung erhalten. Die Verzeichnisstruktur ist wie folgt:Erste Schritte mit einem SBT-Projekt

|-- build.sbt 
|-- project 
| |-- build.properties 
| |-- plugins.sbt 
| |-- project 
| `-- target 
|-- README.md 
`-- src 
    |-- main 
    | `-- scala 
    |  `-- com 
    |   `-- app-name 
    |    |-- domain 
    |    |-- exception 
    |    |-- repository 
    |    `-- util 
    `-- test 
     `-- scala 
`-- Vagrantfile 

Die Anweisungen sind einen App Einstiegspunkt zu schaffen, die ein einziges Befehlszeilenargument nehmen und eine gewisse Logik läuft.

Ich habe es geschafft, eine einfache "Hallo Welt" sbt Projekt arbeiten, aber ich bin neu zu scala/sbt. Wo würde ich diesen Einstiegspunkt platzieren und wie kann ich ein Befehlszeilenargument akzeptieren?

+0

params so einfach übergeben wie: param1 param2 ausführen ... etc was meinst du mit Einstiegspunkt? Objekt mit App-Trait-Erweiterung? – Pavel

Antwort

1

Der Stammordner für Quelldateien wäre src/main/scala.

Die Parameter werden mithilfe des Arrays args innerhalb Ihres Einstiegspunktobjekts referenziert.

Der Einstiegspunkt ist ein beliebiges Objekt unter diesem Quellbaum, das extends App. Da dies ein Hallo-Welt-Beispiel ist und Sie gerade erst anfangen, würde ich es direkt in die Wurzel der Quellen (src/main/scala/MyApp.scala) fallen lassen.

Etwas wie folgt aus:

object MyApp extends App { 
    println(args.length match { 
     case 0 => "You passed in no arguments!" 
     case 1 => s"You passed in 1 argument, which was ${args(0)}" 
     case x => s"You passed in $x arguments! They are: ${args.mkString(",")}" 
    }) 
} 

Ihre Anwendung auszuführen, geben Sie den Befehl sbt run in der Projektwurzel. Um mit Parametern zu arbeiten, tun Sie sbt run "arg1".

+0

Oh, das sieht wie ein separates Problem mit Ihrer Umgebung/Installation aus ... Leider bin ich ziemlich neu bei Scala & sbt selbst, und das ist nicht etwas, das ich das Wissen habe, um mit zu helfen. Was passiert, wenn Sie 'sbt console' ausführen? – Ruslan

+0

OK, ich denke, ich habe meine Umgebung aussortiert, aber wenn ich deinen Code ausführe, erhalte ich einen Kompilierfehler: 'java.lang.ArrayIndexOutOfBoundsException: 0' – harryg

+1

Wenn du innerhalb von sbt bist solltest du' run arg1 arg2' oder 'run" arg1 "" arg2 "' oder aus der Shell 'sbt" run arg1 arg2 "'. Was Sie vorgeschlagen haben, würde nur ein einzelnes Argument übergeben. "" Arg1 arg2 "' –