Maven - jak zbudować wiele niezależnych projektów Maven z jednego projektu

Mam 3 projekty Mavena

  • WebComponents
  • DataComponents
  • ServiceComponents

Kiedy buduję każdy z projektów, muszę wejść do każdego folderu i uruchomić mvn clean install na każdym z projektów.

Przyjrzałem się projektom wielomodułowym i większość zasobów, które widzę, sugeruje, że muszę zmienić strukturę moich istniejących projektów.

Czy jest możliwe posiadanie nowego projektu, który zbuduje każdy z niezależne projekty bez konieczności wprowadzania jakichkolwiek zmian do czegokolwiek w istniejącym projekcie, w tym ich indywidualnych plików pom?

Prawdopodobnie mogę to osiągnąć pisząc prosty plik wsadowy, który buduje każdy projekt, ale czy jest to możliwe przy użyciu Mavena?

Author: ziggy, 2012-05-19

2 answers

Szukasz agregacji Mavena bez dziedziczenia . Jak pokazano na odnośnej stronie, po prostu tworzysz nowy pom, którego opakowaniem jest " pom "i który ma listę "modułów". Moduł jest względną ścieżką do innego projektu Mavena:

<project>
  ...
  <packaging>pom</packaging>
  ...
  <modules>
    <module>foo</module> <!-- module is in a subdirectory of this project -->
    <module>../bar</module> <!-- module is a sibling to this project -->
    <module>../../../other-projects/baz</module> <!-- somewhere else entirely -->
  </modules>
</project>

Domyślnym zachowaniem podczas budowania takiego pom-u-znanego jako "agregator" - jest budowanie wszystkich modułów tak, jakbyś uruchomił Mavena w każdym katalogu z tymi samymi argumentami.

 36
Author: Ryan Stewart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-19 19:11:00

Jeśli dodasz projekt agregatora do katalogu powyżej trzech projektów, które nazywają je modułami (Nazwa modułu = nazwa podkatalogu), zbuduje je bez potrzeby wprowadzania zmian we własnych Pomach. Nie muszą nazywać tego rodzicem.

 5
Author: artbristol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-19 15:05:43