2.1 plugin-ul de resurse de copiere a maven-resources-plugin

Dacă construiți o aplicație web, atunci veți avea doar o grămadă de resurse diferite în ea. Acestea sunt biblioteci jar, servlet-uri jsp, fișiere de setări. Și, desigur, aceasta este o grămadă de fișiere statice precum html, css, js, precum și diverse imagini.

În mod implicit, atunci când construiește un proiect, Maven va copia pur și simplu toate fișierele din folder src/main/resourcesîn directorul țintă. Dacă doriți să faceți modificări acestui comportament, atunci pluginul vă va ajuta maven-resources-plugin.

Exemplu de cod pentru un astfel de 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>

Acest plugin va fi apelat în timpul fazei de validare. Folosind eticheta, <outputDirectory>puteți seta directorul în care pluginul ar trebui să copieze resursele specificate în <resources>. Și aici este locul în care pluginul se poate desfășura în toată puterea lui.

2.2 Filtrarea resurselor cu plugin-ul maven-resources

Resursele pluginului pot fi specificate nu numai sub formă de fișiere, ci imediat sub formă de directoare. Mai mult, în director poate fi adăugată o mască, care specifică ce fișiere din acesta vor fi incluse în această resursă.

Exemplu:


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

Două asteriscuri sub formă de mască reprezintă orice număr de directoare . În exemplul de mai sus, toate fișierele png conținute în director src/main/resources/images(și subdirectoarele acestuia) vor fi luate ca date de resurse.

Dacă doriți să excludeți unele fișiere, puteți utiliza fișierul exclude. Exemplu:

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

Etichetele sunt aplicate secvențial: mai întâi, fișierele de includere specificate în fișierele de includere vor fi adăugate la resursă, iar apoi fișierele de excludere vor fi excluse din această listă.

Dar asta nu este tot. Pluginul poate căuta în interiorul fișierelor (dacă sunt text, desigur). Și, de exemplu, adăugați application.propertiesversiunea necesară a ansamblului la fișier. Pentru ca pluginul să proceseze conținutul fișierului, trebuie să specificați parametrul <filtering>true</filtering>.

Exemplu:

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

Mai multe detalii despre acest plugin pot fi găsite la linkul: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 plugin de includere a sursei maven-source-plugin

Un alt plugin util - maven-source-pluginvă permite să includeți codul sursă al fișierelor dvs. java în asamblare. Pentru ce?

Chestia este că, pe lângă aplicațiile web, un număr foarte mare de biblioteci sunt asamblate folosind Maven. O mulțime de proiecte Java urmează conceptul de open-source și sunt distribuite comunității Java cu propriile surse.

De ce aveți nevoie de un plugin separat? De ce nu poți să copiați sursa și gata?

În primul rând, în orice proiect complex, sursele pot fi stocate în mai multe locuri.

În al doilea rând, generarea de surse pe baza specificațiilor xml este adesea folosită, astfel de surse trebuie de asemenea incluse în asamblare.

Și în al treilea rând, puteți decide să nu includeți fișiere deosebit de secrete în ansamblul dvs.

Un exemplu de utilizare a pluginului maven-source-plugin:

<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 Plugin de copiere a dependenței de maven-dependency-plugin

De asemenea, poate fi necesar să copiați inteligent dependențele (biblioteci) atunci când construiți un proiect. Pentru aceasta este folosit un plugin maven-dependency-plugin.

Exemplu:

<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>

În acest exemplu, comportamentul implicit al pluginului este scris - copierea bibliotecilor în ${project.build.directory}/lib.

Secțiunea de execuție precizează că pluginul va fi apelat în timpul fazei de construire - pachet, scop - dependențe de copiere.

În general, acest plugin are un set destul de mare de obiective, iată cele mai populare:

1 dependență:analiza analiza dependenței (utilizat, nefolosit, specificat, nespecificat)
2 dependență:analiza-duplicare identificarea dependențelor duplicate
3 dependență:rezolvare rezoluția (definiția) tuturor dependențelor
4 dependency:resolve-plugin permisiunea (definiția) tuturor pluginurilor
5 dependență: arbore afișarea arborelui de dependență

De asemenea, puteți seta parametri suplimentari în secțiunea de configurare:

1 directorul de ieșire Director în care dependențele vor fi copiate
2 overWriteReleases Marcați pentru a suprascrie dependențele atunci când creați o versiune
3 suprascrie instantanee Marcați pentru a suprascrie dependențele non-terminale care au SNAPSHOT
4 overWriteIfNewer Marcați pentru a suprascrie bibliotecile cu versiuni mai noi

Exemplu:


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

În mod implicit <overWriteReleases>, și <overWriteSnapshots>este fals, deoarece <overWriteIfNewer>este adevărat.