Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Multi Module Build Automation mit Maven

Vererbung versus Multimodul

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Wie in der OOP kennt Maven das Vererbungskonzept. Dabei erbt ein Kind-POM von Eltern-POMs. Die Alternative ist die Aggregation von Modulen: Dieses Konzept wird Multimodul-Konzept genannt. Das Video erläutert beide Konzepte.

Transkript

Es gibt in Maven zwei verschiedene Typen an Projekten, die andere Maven-Strukturen benutzen. Diese können auf zwei Arten verwendet werden. Es gibt die Vererbung und es gibt das Multimodul-Konzept. Im Grunde sollte jeder Java-Programmierer diese Technologien von der Idee her kennen, denn es gibt natürlich Vererbung in der objektorientierten Programmierung genauso, wie die sogenannte Aggregation beziehungsweise Komposition. Vererbung, sehen Sie hier, ist ganz klar, das hier. Und was wir unter einem Multimodul verstehen, ist eine Aggregation. Wir werden uns in diesem Video, die theoretischen Grundlagen etwas genauer klarmachen, die Grundlagen natürlich in Hinsicht auf Maven. Zuerst betrachten wir die Vererbung. Bei der Vererbung gibt es in Maven ein Parent-Project, also ein Elternprojekt, das Dinge, Regeln aus der POM-Datei an die Kindprojekte weitervererbt. Es gibt einmal diese Super-POM, die allgemein für jedes Maven-Projekt die Basis bildet und von der alle Projekte erben. Man kann aber auch die üblichen Techniken sich vorstellen, dass man ein Bottom-Up Design oder ein Top-Down Design durchführt und entweder aus Einzelprojekten Gemeinsamkeiten findet und sie in ein Parent-Projekt nach oben verlagert oder Unterscheidungen trifft, sobald in einem Projekt nicht mehr alles gemeinsam geschrieben werden kann. Ganz klassisches objekt-orientiertes Design, was sich hier widerspiegelt. Bei Maven ist es so, dass alle Regeln, die in diesem Parent-POM definiert werden, an die Kind-POM weitergegeben werden. Sie werden eben vererbt. Diese Beziehungen, die Sie hier definieren, befassen sich mit den Definitionen eines Projektes. Das muss man sich klarmachen mit den Definitionen des Projektes, nicht mit den Inhalten. Und jedes Kind-POM (Project-Object-Model) wird von dem Parent als Startpunkt abgeleitet. Klassische Vererbung. Ich sage es nochmal. Schauen wir uns mal ein kleines Beispiel an. Hier haben wir so ein Parent-POM-File. Das könnte so aussehen. Sie haben "project" eine "modelVersion" und vor allen Dingen eben die "groupId", "artifactId" und "version". Dazu eine Angabe zum Packaging. Ein Child POM könnte so aussehen. Wir haben wieder ein "project". Wir haben hier die "modelVersion". Aber vor allen Dingen haben wir hier ein Element "parent". In diesem ParentNode befinden sich die Kernidentifikationstags vom "parent". Das heißt, hier haben wir die gleiche "groupId". Insbesondere die "artifactId" ist diese hier also vom "parent". Noch überraschender ist diese vom "parent". Dieses hier, da es nur eine POM-Packaging-Anweisung enthält, stellt nur einen Container für Kindelemente da. Bei diesem Kindelement gibt es auch eine eigene "artifactId" und die wird dann zur eindeutigen Identifikation von diesem Kind-POM benutzt. Es ist bemerkenswert, dass nur die "artifactId" hier auftaucht, nicht die "version" und nicht die "groupId". Diese werden vererbt. Kommen wir zu dem Gegenstück, nämlich die Aggregation, ein Multimodul-Konzept. In diesem Fall wird wie bei der klassischen Aggregation eine Gruppe von Modulen zu einem anderen Modul zusammengefasst, einem Container-Modul. Bei diesem Konzept wird von der obersten Ebene, also dem Container nach unten definiert, zu dem Submodul. Wenn Sie so ein Multimodul erzeugen, dann werden die referenzierten Module einfach miteingebunden. Module werden also zu einem einzigen Build zusammengefasst. Und das übergeordnete POM, das Parent, definiert eine Liste der Module. Auch hier soll natürlich ein Beispiel das demonstrieren. Hier haben wir wieder das Parent-Element. Wir haben die "groupId", "artifactId" und "version" und auch hier wieder den "packaging"-Type "pom". Der Container darunter, der ist jetzt von Bedeutung, "modules" sagt, welche Module hier zusammengefasst werden. Es ist bemerkenswert, dass bei der Vererbung das Elternelement nicht weiß, welche Kinder es hat. Die Kinder wissen, wer der Elternknoten ist. In dem Fall ist es genau umgekehrt, denn das Elternelement weiß, welche Kinder "Module" es enthält. Dieses Submodul beinhaltet hier im "parent"-Bereich die gleichen Daten, wie hier dieses Parent POM, also "groupId", "artifactId" und "version", hat aber dann auch eine eigene "artifactId". Hier haben Sie eine "packaging"-Angabe als "jar". Das ist also eine normale Java-Datei, die hier von der Struktur beschrieben wird. Und wir haben gegebenenfalls irgendwelche Abhängigkeiten. Alle übergeordneten Abhängigkeiten, werden also bei einem Multimodul-Projekt im übergeordneten Objekt definiert. Das Elternelement weiß, welche Kinder es hat. Man kann Abhängigkeiten auch im Elternelement angeben, wenn gemeinsame Abhängigkeiten von verschiedenen Modulen existieren. Man könnte zum Beispiel, Log4j oder JUnit da als Anhängigkeit definieren. Damit haben die vererbten Projekte, automatisch Zugriff auf diese beiden Anhängigkeiten. Fassen wir zusammen. Bei einem Vererbungsprozess bekommen alle Kindelemente sofort sämtliche Eigenschaften, sämtliche Dinge aus dem Elternelement vererbt. Bei einem Multimodul-Konzept werden in einem Container-Elternelement andere Module einfach zusammengefasst, wobei man auch dann gewisse Dinge weitergeben kann, wie Abhängigkeiten.

Multi Module Build Automation mit Maven

Nutzen Sie mit diesen Techniken Maven optimal für Ihre Projekte.

55 min (17 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!