Jestem nowy w Maven i próbuję zrozumieć, dlaczego moduły mojej firmy są zorganizowane w "grupy modułów", ale także każdy podmoduł wyraźnie deklaruje rodzica. Nie bardzo rozumiem, co POM próbuje powiedzieć o difference between inheritance and aggregation.Apache Maven: Jaka jest różnica między Dziedziczeniem, Agregacją i Zależnościami?
Na przykład, moduł nadrzędny:
<groupId>example.group</groupId>
<artifactId>util</artifactId>
<packaging>pom</packaging>
<name>Util Parent</name>
<modules>
<module>util_client</module>
<module>util_core</module>
<module>util_server</module>
</modules>
a jednym z jej dzieci:
<parent>
<artifactId>util</artifactId>
<groupId>example.group</groupId>
<version>trunk-SNAPSHOT</version>
</parent>
<groupId>example.group.util</groupId>
<artifactId>util_core</artifactId>
<packaging>jar</packaging>
<name>Util Core</name>
Dlaczego zadeklarować to w obie strony? Czy jest zbędny? Aby sprawę jeszcze bardziej skomplikować, niektóre util submodułów zależą od siebie nawzajem:
<groupId>example.group.util</groupId>
<artifactId>util_client</artifactId>
<packaging>jar</packaging>
<name>Util Client</name>
<dependencies>
<dependency>
<groupId>example.group.util</groupId>
<artifactId>util_core</artifactId>
</dependency>
</dependencies>
Przepraszam, jeśli jest to doozy z pytaniem, ale wow to jest mylące! Dzięki za pomoc.
Dlaczego więc nie chciałbym podać 'util_core' jako podmodułu' util_client'? Czy 'util_client' nadal będzie się kompilował? –
Nie będzie się kompilował, dopóki 'util_core' nie zostanie zainstalowany' mvn install' Jeśli zrobisz to z poziomu najwyższego, skompiluje je wszystkie w kolejności. –