2012-04-14 19 views

Odpowiedz

16

Runner SBT normalnie nie tworzy nowych procesów, więc musisz również powiedzieć, aby to zrobić, jeśli chcesz ustawić argumenty, które są przekazywane. Można dodać coś takiego w ustawieniach produkcji:

fork := true 

javaOptions := Seq("-Dmx=1024M") 

Jest więcej szczegółów na procesy rozwidlone w the SBT documentation.

+0

Jak można zrobić to w wierszu poleceń w/polecenia uruchomienia? –

+1

Chad zadał to pytanie jako osobne pytanie na http://stackoverflow.com/questions/21389392/ –

8

znalazłem najlepszym sposobem jest dodanie tego do build.sbt:

// important to use ~= so that any other initializations aren't dropped 
// the _ discards the meaningless() value previously assigned to 'initialize' 
initialize ~= { _ => 
    System.setProperty("config.file", "debug.conf") 
} 

pokrewne: Kiedy robi to w celu zmiany konfiguracji Typesafe że zostanie załadowany (moim przypadku używania), trzeba również ręcznie to domyślne config. W tym celu sugerowana konfiguracja 01-konfiguracji Typesafe nie była wystarczająca, ale zadziałała include classpath("application.conf"). Warto wspomnieć, ponieważ niektórzy inni mogą chcieć zastąpić właściwości systemu z dokładnie tego samego powodu.

Źródło: discussion na liście mailingowej SBT

+0

Okazało się, że "inne" było mną, tylko 8 dni później. Udało się jakoś utracić część "classpath()". Powód # 1 dla wpisów StackOverflow ma służyć jako przypomnienie dla siebie ... – akauppi

+1

Uwaga: Z jakiegoś powodu to nie działa, jeśli chce się osobno zdefiniować dla "w teście" w innym miejscu w pliku build.sbt. W sumie użycie "initialize" wydaje się w najlepszym razie częściowo udokumentowane, więc wybieram podejście "fork: = true", które sugeruje Luke Taylor. – akauppi

+0

To wstyd, ponieważ wolałem twoje podejście. Czy nadal ustawiasz osobną wirtualną maszynę Java po ustawieniu 'javaOptions'? –

4

Dzięki za wskazówki, to faktycznie pomógł mi rozwiązać problem z nieco związanych Scala testów.

Okazało się, że sbtrobi widelec testy gdy istnieją podprojekty (patrz moja code), a niektóre z tych testów nie podnieść właściwość systemu.

Więc w sbt -Dsomething="some value" test, niektóre z tych testów nie powiedzie się, gdy nie znajdując something we właściwościach systemu (który okazał się być mój DB URI, więc to trochę znaczenia!)

Ten jechał mnie do szału, więc Pomyślałem, że opublikuję to tutaj dla przyszłego odniesienia dla innych (jak poprawnie zauważyłem @akauppi, są duże szanse, że "inni" mogą być mną za kilka tygodni!).

Rozwiązaniem było dodać następujące build.st:

fork in Test := false

Powiązane problemy