2015-12-13 22 views
9

Projekt gra ma "projekt" folderu takiego:Struktura katalogów SBT. Co to jest "projekt"?

  • projektu
    • cel
    • projekt
      • cel

Zawsze uważałem, że to tylko jedna z tych tajemnic życia, o których nie powinienem się zbytnio zastanawiać, ale dzisiaj moja ciekawość osiągnęła to, co najlepsze.

Googling dał mi this, który wspomina, że ​​folder "projektu" najwyższego poziomu służy do konfiguracji sbt. Zastanawiam się, dlaczego nie nazwali tego ".sbt" a la ".git" i dlaczego nadal znajduje się plik "build.sbt" poza tym folderem, ale przypuszczam, że nie ma dobrej zabawy w robieniu rzeczy faktycznie ma sens.

Nie wspomina również, dlaczego zawiera w sobie kolejny folder "projektu".

Dlaczego istnieje zagnieżdżony folder "projektu"?

+0

Nie Zagraj specyficzny, ale SBT związane – cchantep

+0

@cchantep dzięki, ja edytowany tytuł –

Odpowiedz

6

http://www.scala-sbt.org/0.13/tutorial/Organizing-Build.html:

build.sbt kryje jak SBT naprawdę działa. Kompilacje sbt są zdefiniowane za pomocą kodu Scala. Ten sam kod musi zostać zbudowany. Czy jest lepszy sposób niż w przypadku sbt?

Katalog projektu to kolejna kompilacja wewnątrz twojej kompilacji, która wie, jak zbudować kompilację. 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.

I żółwie schodzą w dół. Jeśli chcesz, możesz zmodyfikować definicję kompilacji projektu definicji kompilacji, tworząc katalog projektu/projektu /.

+1

powinien mieć faktycznie przeczytać stronę ... Ja po prostu spojrzał na wykresie struktury –

+1

Wypracowanie na to, wtyczki do SBT są zwykle skonfigurowane w metabuild, ponieważ muszą one być dostępne do zbudowania rzeczywistego projektu. Nie jest typowe mieć meta-metamorfozę ... ale możesz. – acjay

+2

FTR, mamy meta-meta-build w https://github.com/scala-js/scala-js, który zawiera generator źródeł, który generuje źródła * dla projektu budowy *, tj. Dla meta-build . Więc * tak *, możesz! – sjrd

2

SBT jest rekursywna. Definiuje właściwości kompilacji dla twojego projektu za pomocą kodu scala. Gdzie umieścić kod scala? Do innego projektu wewnątrz bieżącego projektu. Ale jeśli sama definicja projektu jest poprawnym projektem, można ją skonfigurować za pomocą innej konfiguracji sbt. I tak dalej. Scala faceci lubią rekurencyjne struktury.

Możesz zmienić wersję kompilatora scala, opcje kompilatora scala dla projektów zagnieżdżonych (w sensie meta). Prawdopodobnie może zmienić sposób interpretacji metaproject i wpłynąć na najwyższy projekt.

+1

"Możesz zmienić wersję kompilatora scala" To jest jedna rzecz, której nie powinieneś zmieniać, ponieważ dla meta-buildów musi to być ta sama wersja, której używa SBT. –