Dla celów edukacyjnych I utworzyły układ projektu jak tak (płaski w celu swoich zaćmienie lepiej):Maven - projekt "wszystko" lub "rodzic" do agregacji?
-product
|
|-parent
|-core
|-opt
|-all
nadrzędna zawiera łączny projekt z rdzeniem, zrezygnować i wszystko. Core implementuje obowiązkową część aplikacji. Opt jest częścią opcjonalną. Wszystko powinno łączyć rdzeń z opcją, a te dwa moduły są wymienione jako zależności.
Jestem teraz próbuje wprowadzić następujące artefakty:
- z produktem core.jar
- produkt-core-src.jar
- produkt-core-z-dependencies.jar
- product-opt.jar
- product-opt-src.jar
- product-opt-z-dependencies.jar
- product-all.jar
- produkt-all-src.jar
- product-wszystko-z-dependencies.jar
Większość z nich są dość proste do wykonania. Mam jednak pewien problem z artefaktami agregującymi. Udało mi się zrobić produkt-all-src.jar z niestandardowym deskryptorem zespołu w module "all", który pobiera źródła dla wszystkich nieprzechodniowych depów, i to działa dobrze. Technika ta pozwala mi również na tworzenie produktu all-with-dependencies.jar.
Jednak niedawno odkryłem, że można użyć źródła: celu agregującego w źródłowej wtyczce do agregowania źródeł całego zagregowanego projektu. Dotyczy to również wtyczki javadoc, która również agreguje przy użyciu projektu nadrzędnego.
Tak więc jestem rozdarty między moim podejściem do "wszystkich" modułów i porzuceniem modułu "wszystkie" i po prostu używam modułu "nadrzędny" dla wszystkich agregacji. Czuje się nieczyste, aby niektóre artefakty zebrane w "rodzic", a inne produkowane w "wszystkich". Czy istnieje sposób tworzenia słoja "produkt-wszystko" w projekcie nadrzędnym lub agregowania javadoc w projekcie "wszystkie"? A może powinienem zachować oba?
Dzięki
Dzięki za cynk. Właśnie obejrzałem to i wygląda na to, że źródło maven podąża za ogólnym układem, który zasugerowałem, jednak bez spłaszczania drzewa, jak wskazałeś. Końcowy skład jest niezbyt czysty, po prostu robi wyrażeń regularnych grep dla wszystkich plików źródłowych w katalogu "../", nie jest łatwy, jeśli chcesz źródła z zależności 3: rd party itd. Również nie jest zgodny z tym, w jaki sposób javadoc praca agregatora (za pośrednictwem projektu nadrzędnego). Wygląda na to, że brakuje mi funkcjonalności, spróbuję zapisać alternatywne podejście tutaj, kiedy eksperymentowałem z niektórymi. Dzięki za wskaźnik. –
BTW, zespół src można znaleźć pod adresem http://svn.apache.org/repos/asf/maven/maven-3/trunk/apache-maven/src/main/assembly/src.xml –