2014-04-03 13 views
6

Próbuję przekonwertować projekt pojedynczego modułu na dwa moduły za pomocą agregatu root o wartości . Wydaje się normalną rzeczą do zrobienia.Wtyczki sbt nie są pobierane z submodułów?

Tak więc, aby uprościć usunąłem drugi projekt, który dodałem ale zrobić coś takiego:

cd myproject 
mkdir core 
mv * core 

a następnie dodać build.sbt w myproject jak

lazy val root = project.in(file(".")).aggregate(core) 
lazy val core = project in file("core") 

jednak , próbując zbudować rdzeń, otrzymuję:

[myproject]/core/build.sbt:22: error: not found: value lessSettings seq(lessSettings:_*)

który jest ustawieniem dla plugin dodane projektu/plugins.sbt oryginalnego projektu teraz w

[myproject]/core/project/plugins.sbt 

Czemu tego nie odebrał? Czy nie mogę mieć wtyczek żyjących tylko w submodułach ? cd: ing do rdzenia submodule i działającego sbt to działa dobrze. Czy mam przenieść moje wtyczki do katalogu głównego/projektu? Całkiem proszę, nie może tak być?

Odpowiedz

7

Twój plik plugin.sbt jest ignorowany, ponieważ nie można mieć podfolderu project w podprojektie kompilacji z wieloma projektami.

W multi-project build,

  • W .sbt pliki projektu głównego, a wszystkie .sbt akta wszystkich podprojektów, są częścią pojedynczy definicji kompilacji. Ustawienia zdefiniowane w podprojekcie są automatycznie dopasowywane do tego projektu.

  • Ponieważ istnieje tylko jedna definicja kompilacji, istnieje tylko jeden projekt do zbudowania tej definicji kompilacji, który znajduje się w katalogu głównym projektu project/. Wszystkie foldery podprojektówbędą ignorowane.

W twoim przypadku, przesuwając plugin.sbt do korzenia build project folderu należy dokonać wtyczki pojawiają się ponownie.

Ponadto, jeśli tylko pracować nad projektem core, zamiast biegać sbt w rdzeniu, można uruchomić sbt w projekcie root i wpisz project core do „wrzucenia” (faktycznie, zakres wszystko, co robisz) do rdzenia pod- projekt.

+1

. ( bał się, że to przypadek Oznacza to mam tylko jedno „plugin-scope” tak powiedzieć xsbt-web-plugin będzie zanieczyszczać build dla mojego rdzenia, który może nie być projektem internetowej Temp.. jak dla mnie zepsuta architektura, ideał byłby w stanie skomponować projekt wielomodułowy, wskazując na różne projekty, tak jak jest, –

+2

Nie jest tak źle, jak się wydaje, Wtyczki nie będą zanieczyszczać projektów, które nie importują swoich ustawień. xsbt-web-plugin, po prostu pomijasz 'WebPlugin.webSettings' z każdego z niewspółpracujących submodułów. Zobacz [gałąź multi-projektu xwp-template] (https://github.com/earldouglas/xwp-template/blob/ multi-project/project/Build.scala) na przykład – earldouglas

+0

Uzgodnione.Nadal jednak uważam, że jest to problem architektoniczny, ponieważ uniemożliwi to kiedykolwiek dokonanie agregacji projektów poprzez odniesienie się do nich jako agregatów. Podmoduły są zawsze zależne od modelu supermoduły. –

Powiązane problemy