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/resources
til 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.properties
den 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-plugin
lar 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.