CodeGym /Java-Kurse /Modul 3: Java Professional /Verwalten von Dateien beim Erstellen eines Maven-Projekts...

Verwalten von Dateien beim Erstellen eines Maven-Projekts

Modul 3: Java Professional
Level 2 , Lektion 1
Verfügbar

2.1 maven-resources-plugin Ressourcen-Plugin kopieren

Wenn Sie eine Webanwendung erstellen, enthält sie lediglich eine Reihe verschiedener Ressourcen. Dies sind JAR-Bibliotheken, JSP-Servlets und Einstellungsdateien. Und natürlich handelt es sich hierbei um eine Menge statischer Dateien wie html, css, js, sowie verschiedene Bilder.

Standardmäßig kopiert Maven beim Erstellen eines Projekts einfach alle Ihre Dateien aus dem Ordner src/main/resourcesin das Zielverzeichnis. Wenn Sie Änderungen an diesem Verhalten vornehmen möchten, hilft Ihnen das Plugin dabei maven-resources-plugin.

Beispielcode für ein solches Plugin:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>
                   ${basedir}/target/resources
                </outputDirectory>
                <resources>
                    <resource>  instructions for copying a resource 1 </resource>
                    <resource>  instructions for copying a resource 2 </resource>
                    <resource>  instructions for copying a resource N </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Dieses Plugin wird während der Validierungsphase aufgerufen. Mithilfe des Tags <outputDirectory>können Sie das Verzeichnis festlegen, in das das Plugin die im . angegebenen Ressourcen kopieren soll <resources>. Und hier kann das Plugin seine ganze Kraft entfalten.

2.2 Ressourcen mit dem Maven-Ressourcen-Plugin filtern

Plugin-Ressourcen können nicht nur in Form von Dateien, sondern direkt in Form von Verzeichnissen angegeben werden. Darüber hinaus kann dem Verzeichnis eine Maske hinzugefügt werden, die angibt, welche Dateien daraus in diese Ressource aufgenommen werden.

Beispiel:


            <resource>
                <directory>src/main/resources/images</directory>
                <includes>
                     <include>**/*.png</include>
                </includes>
            </resource>

Zwei Sternchen als Maske repräsentieren beliebig viele Verzeichnisse . Im obigen Beispiel werden alle im Verzeichnis src/main/resources/images(und seinen Unterverzeichnissen) enthaltenen PNG-Dateien als Ressourcendaten verwendet.

Wenn Sie einige Dateien ausschließen möchten, können Sie die exclude. Beispiel:

<resource>
    <directory>src/main/resources/images</directory>
    <includes>
        <include>**/*.png</include>
    </includes>
    <excludes>
         <exclude>old/*.png</exclude>
    </excludes>
</resource>

Tags werden nacheinander angewendet: Zuerst werden die in den Include-Dateien angegebenen Einschlussdateien zur Ressource hinzugefügt, und dann werden die Ausschlussdateien aus dieser Liste ausgeschlossen.

Aber das ist nicht alles. Das Plugin kann in Dateien schauen (natürlich nur, wenn es sich um Text handelt). Und fügen Sie beispielsweise application.propertiesder Datei die erforderliche Version der Baugruppe hinzu. Damit das Plugin den Inhalt der Datei verarbeiten kann, müssen Sie den Parameter angeben <filtering>true</filtering>.

Beispiel:

<resource>
    <directory>src/main/resources/properties</directory>
    <filtering>true</filtering>
    <includes>
        <include>**/*. properties </include>
    </includes>
</resource>

Weitere Details zu diesem Plugin finden Sie unter dem Link: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 Maven-Source-Plugin Quell-Inclusion-Plugin

Ein weiteres nützliches Plugin – maven-source-pluginermöglicht es Ihnen, den Quellcode Ihrer Java-Dateien in die Assembly einzubinden. Wofür?

Die Sache ist, dass neben Webanwendungen auch eine sehr große Anzahl von Bibliotheken mit Maven zusammengestellt wird. Viele Java-Projekte folgen dem Open-Source-Konzept und werden mit eigenen Quellen an die Java-Community verteilt.

Warum benötigen Sie ein separates Plugin? Warum können Sie nicht einfach die Quelle kopieren und das war's?

Erstens können die Quellen in jedem komplexen Projekt an mehreren Orten gespeichert werden.

Zweitens wird häufig die Generierung von Quellen basierend auf XML-Spezifikationen verwendet. Solche Quellen müssen ebenfalls in die Assembly einbezogen werden.

Und drittens können Sie entscheiden, keine besonders geheimen Dateien in Ihre Versammlung aufzunehmen.

Ein Beispiel für die Verwendung des Maven-Source-Plugin-Plugins:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2.4 Maven-Dependency-Plugin Plugin zum Kopieren von Abhängigkeiten

Möglicherweise müssen Sie beim Erstellen eines Projekts auch Abhängigkeiten (Bibliotheken) intelligent kopieren. Hierzu wird ein Plugin verwendet maven-dependency-plugin.

Beispiel:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <outputDirectory>
            ${project.build.directory}/lib/
        </outputDirectory>
    </configuration>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>

In diesem Beispiel ist das Standardverhalten des Plugins beschrieben: Kopieren von Bibliotheken in die ${project.build.directory}/lib.

Im Ausführungsabschnitt heißt es, dass das Plugin während der Build-Phase aufgerufen wird – Paket, Ziel – Kopierabhängigkeiten.

Im Allgemeinen hat dieses Plugin eine ziemlich große Reihe von Zielen, hier sind die beliebtesten:

1 Abhängigkeit:analysieren Abhängigkeitsanalyse (verwendet, nicht verwendet, spezifiziert, nicht spezifiziert)
2 Abhängigkeit:analyze-duplicate Identifizierung doppelter Abhängigkeiten
3 Abhängigkeit:auflösen Auflösung (Definition) aller Abhängigkeiten
4 Abhängigkeit:resolve-plugin Erlaubnis (Definition) aller Plugins
5 Abhängigkeit:Baum Anzeigen des Abhängigkeitsbaums

Sie können im Konfigurationsbereich auch zusätzliche Parameter festlegen:

1 Ausgabe Verzeichnis Verzeichnis, in das Abhängigkeiten kopiert werden
2 overWriteReleases Flag zum Überschreiben von Abhängigkeiten beim Erstellen eines Releases
3 overWriteSnapshots Flag zum Überschreiben von Nicht-Terminal-Abhängigkeiten, die SNAPSHOT haben
4 overWriteIfNewer Flag zum Überschreiben von Bibliotheken mit neueren Versionen

Beispiel:


<configuration>
    <outputDirectory>
         ${project.build.directory}/lib/
    </outputDirectory>
    <overWriteReleases>false</overWriteReleases>
    <overWriteSnapshots>false</overWriteSnapshots>
    <overWriteIfNewer>true</overWriteIfNewer>
 </configuration>

Standardmäßig <overWriteReleases>ist und <overWriteSnapshots>falsch, denn es <overWriteIfNewer>ist wahr.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION