2.1 maven-resources-plugin kopi ressurser plugin

Hvis du bygger en nettapplikasjon, vil du bare ha en haug med forskjellige ressurser i den. Dette er jar-biblioteker, jsp-servlets, innstillingsfiler. Og selvfølgelig er dette en haug med statiske filer som html, css, js, samt forskjellige bilder.

Som standard, når du bygger et prosjekt, vil Maven ganske enkelt kopiere alle filene dine fra mappen src/main/resourcestil målkatalogen. Hvis du vil gjøre endringer i denne oppførselen, vil plugin-en hjelpe deg maven-resources-plugin.

Eksempelkode for en slik 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>

Denne plugin vil bli kalt under valideringsfasen. Ved å bruke taggen <outputDirectory>kan du angi katalogen der pluginet skal kopiere ressursene som er spesifisert i <resources>. Og det er her pluginen kan utfolde seg i all sin makt.

2.2 Filtrering av ressurser med maven-resources-plugin

Plugin-ressurser kan spesifiseres ikke bare i form av filer, men umiddelbart i form av kataloger. Dessuten kan en maske legges til katalogen, som spesifiserer hvilke filer fra den som skal inkluderes i denne ressursen.

Eksempel:


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

To stjerner som en maske representerer et hvilket som helst antall kataloger . I eksemplet ovenfor vil alle png-filer i katalogen src/main/resources/images(og dens underkataloger) bli tatt som ressursdata.

Hvis du vil ekskludere noen filer, kan du bruke exclude. Eksempel:

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

Tagger brukes sekvensielt: Først vil inkludere filene som er spesifisert i inkludere filene bli lagt til ressursen, og deretter ekskludere filene vil bli ekskludert fra denne listen.

Men det er ikke alt. Programtillegget kan se inn i filer (hvis de er tekst, selvfølgelig). Og legg for eksempel til application.propertiesden nødvendige versjonen av sammenstillingen til filen. For at pluginet skal behandle innholdet i filen, må du spesifisere parameteren <filtering>true</filtering>.

Eksempel:

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

Flere detaljer om denne plugin-modulen finner du på lenken: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 maven-source-plugin plugin for kildeinkludering

En annen nyttig plugin - maven-source-pluginlar deg inkludere kildekoden til Java-filene dine i sammenstillingen. For hva?

Saken er at i tillegg til nettapplikasjoner, samles et veldig stort antall biblioteker ved hjelp av Maven. Mange Java-prosjekter følger konseptet med åpen kildekode og distribueres til Java-fellesskapet med sine egne kilder.

Hvorfor trenger du en separat plugin? Hvorfor kan du ikke bare kopiere kilden og det er det?

For det første, i ethvert komplekst prosjekt, kan kildene lagres flere steder.

For det andre brukes ofte generering av kilder basert på xml-spesifikasjoner, slike kilder må også inkluderes i sammenstillingen.

Og for det tredje kan du bestemme deg for ikke å inkludere noen spesielt hemmelige filer i forsamlingen din.

Et eksempel på bruk av maven-source-plugin-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 maven-dependency-plugin avhengighet kopi plugin

Du må kanskje også smart kopiere avhengigheter (biblioteker) når du bygger et prosjekt. En plugin brukes til dette maven-dependency-plugin.

Eksempel:

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

I dette eksemplet er standardoppførselen til plugin-modulen skrevet - kopiering av biblioteker til ${project.build.directory}/lib.

Utførelsesdelen sier at pluginet vil bli kalt under byggefasen - pakke, mål - kopiavhengigheter.

Generelt har denne pluginen et ganske stort sett med mål, her er de mest populære:

1 avhengighet: analysere avhengighetsanalyse (brukt, ubrukt, spesifisert, uspesifisert)
2 avhengighet:analyse-duplisere identifisere dupliserte avhengigheter
3 avhengighet: løse oppløsning (definisjon) av alle avhengigheter
4 dependency:resolve-plugin tillatelse (definisjon) av alle plugins
5 avhengighet:tre viser avhengighetstreet

Du kan også angi flere parametere i konfigurasjonsdelen:

1 outputDirectory Katalog hvor avhengigheter vil bli kopiert
2 overWriteReleases Flagg for å overskrive avhengigheter når du oppretter en utgivelse
3 overskriv øyeblikksbilder Flagg for å overskrive ikke-terminale avhengigheter som har SNAPSHOT
4 overWriteIfNewer Flagg for å overskrive biblioteker med nyere versjoner

Eksempel:


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

Som standard <overWriteReleases>, og <overWriteSnapshots>er usann, for <overWriteIfNewer>er sant.