Projektbeschreibung Objektmodell

Eines der Dinge, die Maven zunächst standardisierte, war die Projektbeschreibung. Vor Maven verfügte jede IDE über eine eigene Projektdatei, in der Informationen über das Projekt und seine Assembly gespeichert waren (oftmals in binärer Form).

Maven hat einen XML-basierten, universellen, offenen Standard entwickelt, der mithilfe verschiedener Tags beschreibt, was ein Projekt ist, wie es erstellt werden sollte und welche Abhängigkeiten es hat. Die Projektbeschreibung ist in einer einzigen Datei enthalten, die normalerweise pom.xml heißt .

Eine Beispieldatei pom.xml :

<?xml version="1.0" binding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io </groupId>
           <artifactId>commons-io</artifactId>
        <version>2.6</version>
        </dependency>
   </dependencies>


</project>

In diesem Beispiel sind drei Dinge geschrieben:

  • Informationen zur Version des Maven-Projektstandards sind blau.
  • Informationen zum Projekt selbst sind rot.
  • Informationen zu verwendeten Bibliotheken sind grün.

Schauen wir uns das POM-Dateigerät genauer an.

Maven-Projektstruktur

Und sofort stellt sich die Frage: Haben Sie auf die Seltsamkeit im letzten Beispiel geachtet? Es enthält keine Informationen über den Projektcode selbst! Es gibt keine Informationen darüber, wo Java-Dateien, Ressourcen, Eigenschaftendateien, HTML, Build-Skripte und dergleichen gespeichert sind.

Und die Antwort ist einfach: Maven hat das Design des Projekts standardisiert. Es gibt mehrere Möglichkeiten, Code innerhalb eines Projekts zu organisieren. Die gebräuchlichste ist:

Die Struktur ist im Vergleich zu den Standard-IDEA-Projekten etwas ungewöhnlich, aber dafür universell. 90 % der Projekte, denen Sie in Ihrem Leben begegnen, werden diese Ordnerstruktur haben .

Wenn Sie ein Maven-Projekt erstellen (mit IDEA oder über die Konsole), nimmt es die angegebene Form an. Mal sehen, wie das alles hier funktioniert.

Der Ordner src enthält, Sie haben es erraten, den Quellcode für das Projekt. Es hat zwei Unterordner: main und test .

Der Ordner /src/main/java ist das Stammverzeichnis für alle Java-Klassen im Projekt. Wenn Sie eine com.codegym.Cat-Klasse haben, befindet sich diese im Ordner /src/main/java /com/codegym /Cat.java . Wenn Text- oder Binärressourcen vorhanden sind, sollten diese im Ordner /src/main/resources gespeichert werden .

Die Struktur des Ordners /src/test ähnelt der Struktur des Ordners /src/main , enthält jedoch die Tests und ihre Ressourcen. Maven selbst weiß, wie man beim Erstellen eines Projekts die notwendigen Tests durchführt, aber wir werden in einer separaten Vorlesung darüber sprechen.

Es gibt auch einen Ordner /target im Projekt , in dem Maven das Projekt nach der Erstellung speichert. Da große Projekte häufig über nicht triviale Build-Skripte verfügen, wird in diesem Ordner nichts gespeichert.

Der zweite Zweck des Ordners /target besteht darin, Zwischenergebnisse des Builds zwischenzuspeichern. Beim Erstellen eines großen Projekts kann Maven nur den geänderten Teil neu erstellen, wodurch die Erstellungszeit um ein Vielfaches beschleunigt wird.

Nun, als Kirsche auf dem Kuchen – das Wurzelwerk des Projekts ist die Datei pom.xml. Es enthält alle notwendigen Informationen zum Projekt, auf die wir im Folgenden eingehen.

Gerät pom.xml

Zunächst handelt es sich bei der POM-Datei um eine XML-Datei, die die Standard-Header und Namespace-Informationen enthält. Hier geht es ausschließlich um den reinen XML-Standard, weshalb wir nicht näher darauf eingehen. Es bedeutet Folgendes:

<?xml version="1.0" binding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">

        …

</Projekt>

Außerdem ist normalerweise die erste Zeile innerhalb des <project>-Tags eine Beschreibung der Version des POM-Dateistandards. Fast immer ist es 4,0. Auch das interessiert uns nicht.

Die ersten Zeilen, die uns interessieren, sehen so aus:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>new-app</artifactId>
  <version>1.0-SNAPSHOT</version>

Um nicht noch einmal zu verstehen, was wir im Maven-Standard beschreiben (Programm, Projekt, Modul, Bibliothek usw.), wird dies alles als Artefakt bezeichnet . Was man den Machern von Maven nicht abschlagen kann, ist die Liebe zur Standardisierung.

Die drei Tags, die Sie sehen, bedeuten:

  • groupId – das Paket, zu dem die Anwendung gehört, mit dem Zusatz des Domänennamens;
  • artefaktId – eindeutiger Zeichenfolgenschlüssel (Projekt-ID);
  • version – Version des Projekts.

Diese drei Parameter reichen aus, um jedes Artefakt eindeutig zu beschreiben .

Darüber hinaus gibt es nach der Beschreibung des Projekts normalerweise eine Liste der Artefakte (Bibliotheken), die das Projekt verwendet. Es sieht ungefähr so ​​aus:

   <dependencies>

       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>

   </dependencies>

In diesem Beispiel fügen wir die commons-io-Bibliothek aus dem commons-io-Paket, Version 2.6, zu unserem Projekt hinzu.

Zur Erstellungszeit findet Maven eine solche Bibliothek in seinem globalen Repository und fügt sie Ihrem Projekt hinzu. Und das kann übrigens nicht nur Maven.

Wie IDEA mit Maven funktioniert

Intellij IDEA arbeitet hervorragend mit Maven zusammen. Sie weiß, wie man solche Projekte öffnet, selbst erstellt, verschiedene Build-Skripte ausführt und versteht die enthaltenen Bibliotheken perfekt.

Es verfügt seit einiger Zeit sogar über einen eigenen integrierten Maven, aber Sie müssen ihn immer noch selbst installieren und konfigurieren können, daher wurde diese Funktion von IDEA zuvor nicht erwähnt. Theoretisch kann es bei IDEA zu einem Konflikt zwischen zwei Mavens kommen, daher ist es gut zu wissen, dass es zwei sind.

So erstellen Sie ein neues Maven-Projekt in IDEA:

Klicken Sie auf das Menü Dateien > Neues Projekt. Wählen Sie links den Menüpunkt Neues Projekt .

Maven-Projekt

Lassen Sie uns einige Punkte klären:

  1. Projektname;
  2. Ordner für das Projekt;
  3. Die Projektsprache ist Java;
  4. Der Projekttyp ist Maven.

Im Abschnitt „Erweiterte Einstellungen“ unten werden Sie von IDEA aufgefordert, die Gruppen-ID, Artefakt-ID und die Version unseres neuen Projekts anzugeben. Diese Daten können später jederzeit problemlos geändert werden. Wählen Sie aus den Vorschlägen oder geben Sie Ihre eigene ein:

Maven-Projekt 2

Als nächstes erstellen Sie standardmäßig ein Projekt am gewünschten Ort. Als Ergebnis sehen wir die Struktur:

Maven-Projekt 3

Klassen und Pakete müssen im Java-Ordner erstellt werden, darüber haben wir bereits gesprochen. Und ich denke, Sie können damit problemlos umgehen. Wir sind bereit, weiterzumachen, aber lassen Sie uns noch einmal auf ein wichtiges Thema zurückkommen, das wir etwas „übersprungen“ haben.