Co to jest „reaktor” w Maven?

105

Czytałem o reaktorze Maven i jestem zdezorientowany jego terminologią. Czytałem, że multi-moduł to reaktor, że można manipulować reaktorem maven i że reaktor jest wtyczką. Czym dokładnie jest reaktor?

harschware
źródło

Odpowiedzi:

164

Reaktor jest częścią Mavena, która pozwala mu na wykonanie celu na zestawie modułów. Jak wspomniano w dokumentacji Maven 1.x dotyczącej konstrukcji wielomodułowych (koncepcja reaktora istniała już w Maven 1.x), podczas gdy moduły są dyskretną jednostką pracy, można je zebrać razem za pomocą reaktora do jednoczesnej budowy i:

Reaktor określa prawidłową kolejność kompilacji na podstawie zależności określonych przez każdy projekt w odpowiednich deskryptorach projektu, a następnie wykona określony zestaw celów. Może być używany zarówno do projektów budowlanych, jak i do innych celów, takich jak generowanie witryn.

Jak wyjaśniono, reaktor jest tym, co umożliwia kompilacje wielomodułowe: oblicza ukierunkowany wykres zależności między modułami, wyprowadza kolejność budowania z tego wykresu (dlatego zależności cykliczne są niedozwolone, co i tak jest dobre), a następnie realizuje cele na moduły. Innymi słowy, „ budowa wielomodułowa ” to „ budowa reaktora ”, a „ budowa reaktora ” to „ budowa wielomodułowa ”.

W Maven 2.x obsługa kompilacji wielomodułowych została znacznie ulepszona, a reaktor stał się przejrzysty dla użytkowników Mavena. Ale nadal tam jest i jest używany pod maską.

We wrześniu 2008 r. (Tj. Długo po wprowadzeniu Maven 2), wtyczka reaktora została stworzona, aby umożliwić (ponownie) ściślejszą interakcję z reaktorem Maven. Brett Porter napisał o tym na blogu w Reactor: My New Favorite Maven Plugin .

Większość funkcji wtyczki reaktora jest teraz obsługiwana natywnie (od Maven 2.1.0). Zobacz Porady i wskazówki Maven: Zaawansowane opcje reaktora .

Pascal Thivent
źródło
10
Dlaczego witryna Mavena mówi, że ta wtyczka jest „wycofana”?
Mopparthy Ravindranath
4
Ponieważ wtyczka reaktora jest wtyczką, która (tylko) „rozmawia” z rzeczywistym reaktorem. Więc nie sam reaktor jest wycofywany, ale związana z nim wtyczka.
Lonzak
8

Reaktor jest używany, gdy projekt ma wiele modułów.

Praca wykonana przez reaktor to:

  • Zbieranie szczegółów modułu
  • Sortowanie kolejności na podstawie zależności
  • Budowanie projektów w porządku

Począwszy od wersji 2.1 dostępne są nowe opcje wiersza poleceń, które pozwalają manipulować sposobem, w jaki Maven będzie budować projekty wielomodułowe. Te nowe opcje to:

-rf, --resume-from
    Resume reactor from specified project
-pl, --projects
    Build specified reactor projects instead of all projects
-am, --also-make
    If project list is specified, also build projects required by the list
-amd, --also-make-dependents
    If project list is specified, also build projects that depend on projects on the list  

źródło

Premraj
źródło