2015-04-23 11 views
5

Używam wtyczki (sbt-scapegoat), która działa tylko dla Scala 2.11.Warunkowe addSbtPlugin na podstawie scalaVersion

Czy mogę mieć warunkowe addSbtPlugin na podstawie scalaVersion? Na przykład:

if (scalaVersion.value.startsWith("2.11")) addSbtPlugin("com.sksamuel.scapegoat" %% "sbt-scapegoat" % "0.94.6") 

Jak mogę to zrobić w SBT?

Jianshi

+0

Czy możesz opisać, o co chodzi w Twoim przypadku użycia? W szczególności jest to wielomodułowa kompilacja? Cross-built? Jakie wersje Scala? Pytam tylko dlatego, że odpowiedź jest trudna, ponieważ najlepsza odpowiedź zależy od twojej sytuacji. –

+0

Hi Dale, to kompilacja jednomodułowa. Nie używam funkcji wzajemnej kompilacji. Wersja Scala to 2.11.6 lub 2.10.5 – huangjs

+0

Jak to jest Scala w wersji 2.11.6 lub wersji 2.10.5? Nie wiesz co masz na myśli –

Odpowiedz

4

tl; dr To nie jest możliwe ze względu na opis problemu.

Istnieje co najmniej dwóch konfiguracji kompilacji zaangażowanych w projekt sbt - prawdziwy projekt (na którym chcesz postawić swoje pieniądze) i kompilację meta do budowy twojego projektu. Tak, wiem, że to brzmi trochę dziwnie, ale to bardzo potężna koncepcja IMHO.

Zobacz sbt is recursive:

katalogu projektu to kolejny build wewnątrz konstrukcji, który wie, jak budować swój build. Aby odróżnić kompilacje, czasami używamy terminu poprawna kompilacja, aby odnieść się do twojej kompilacji, i meta-kompilacji, aby odnieść się do projektu wbudowanego. Projekty wewnątrz metabuild mogą robić wszystko, co każdy inny projekt może zrobić. Twoja definicja kompilacji to projekt sbt.

sbt działa na Scali i wymaga ścisłej wersji. Nie można tego zmienić, chyba że masz ochotę spędzić czas na rzeczy, których naprawdę nie powinno się dotykać :)

Co można zrobić, to zastosować wtyczkę w project/plugins.sbt, a następnie, w projekcie, zastosować ustawienia z wtyczki selektywnie, za scalaVersion z projektu budowy nie samej meta-kompilacji.

Nie jest to tak skomplikowane, jak brzmi odpowiedź, ale wyjaśnianie prostych pojęć zwykle nie jest dla mnie łatwe. Baw się z sbt! Zarobisz szybko, gdy użyjesz go prawidłowo.