Moduły

Projekt Maven'owy może składać się z wielu projektów. Technikę tą wykorzystujemy aby mimo separacji projektu na mniejsze części (fragmenty, komponenty, serwisy) nie musieć redefiniować konfiguracji każdej ze składowych.

Każdy z modułów posiada swój indywidualny plik pom.xml z definicją zależności, pluginów etc. oraz informację o nadrzędnym projekcie. Główny plik POM zawiera metainformacje o projekcie oraz konfiguracje dzielone między modułami (jak i ich samych definicję). Przykładowy plik POM projektu posiadającego moduły wygląda następująco:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pl.edu.ug.introductiontojee</groupId>
    <artifactId>introductiontojee-examples</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>Introduction to JEE examples</name>

    <modules>
        <module>servlets</module>
        <module>jsp</module>
        <module>jpa</module>
        <module>jax-rs</module>
    </modules>
</project>

The Reactor

Reactor jest mechanizmem w Maven'ie odpowiedzialnym za obsługę projektów składających się z wielu modułów. Do jego zadań należy:

  • zebranie informacji o wszystkich modułach do zbudowania
  • posortowanie modułów w odpowiednią kolejność do budowania
  • zbudowanie wszystkich modułów w kolejności

pluginManagement

Konfiguracja pluginów umieszczona w sekcji pluginManagement jest dziedziczona w każdym z modułów projektu. Każdy z modułów ma możliwość nadpisania sekcji pluginManagement. Konfiguracja ta jest przez Maven'a brana pod uwagę wyłącznie w momencie, gdy dany plugin zostanie wykorzystany wprost w module dziedziczącym.

Przykładowa deklaracja pluginu w sekcji pluginManagement:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

dependencyManagement

Zależności zdefiniowane w sekcji dependencyManagement służą jako szablon zależności (po załączeniu ich w sekcji dependencies) dla wszystkich modułów podrzędnych. Przydatne gdy chcemy żeby cały projekt korzystał z danej zależności w konkretnej wersji i była dostępna w jednakowym zasięgu.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8</version>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

results matching ""

    No results matching ""