2.1 maven-resources-plugin kopi ressource plugin
Hvis du bygger en webapplikation, så vil du bare have en masse forskellige ressourcer i den. Disse er jar-biblioteker, jsp-servlets, indstillingsfiler. Og selvfølgelig er dette en masse statiske filer som html
, css
, js
, samt forskellige billeder.
Som standard, når du bygger et projekt, vil Maven blot kopiere alle dine filer fra mappen src/main/resources
til målmappen. Hvis du vil foretage ændringer i denne adfærd, vil plugin'et hjælpe dig maven-resources-plugin
.
Eksempelkode til sådan et 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>
Dette plugin vil blive kaldt under valideringsfasen. Ved at bruge tagget <outputDirectory>
kan du indstille den mappe, hvor plugin'et skal kopiere de ressourcer, der er angivet i <resources>
. Og det er her pluginnet kan udfolde sig i al sin magt.
2.2 Filtrering af ressourcer med maven-resources-plugin
Plugin-ressourcer kan specificeres ikke kun i form af filer, men umiddelbart i form af mapper. Desuden kan en maske tilføjes til mappen, som specificerer, hvilke filer fra den, der vil blive inkluderet i denne ressource.
Eksempel:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
</resource>
To stjerner som en maske repræsenterer et vilkårligt antal mapper . I eksemplet ovenfor vil alle png-filer indeholdt i mappen src/main/resources/images
(og dens undermapper) blive taget som ressourcedata.
Hvis du vil udelukke nogle filer, kan du bruge exclude
. Eksempel:
<resource>
<directory>src/main/resources/images</directory>
<includes>
<include>**/*.png</include>
</includes>
<excludes>
<exclude>old/*.png</exclude>
</excludes>
</resource>
Tags anvendes sekventielt: Først vil de inkluderede filer, der er angivet i inkluderingsfilerne, blive føjet til ressourcen, og derefter vil ekskluderingsfilerne blive ekskluderet fra denne liste.
Men det er ikke alt. Pluginnet kan se inde i filer (hvis de er tekst, selvfølgelig). Og f.eks. tilføje application.properties
den nødvendige version af assembly til filen. For at plugin'et kan behandle indholdet af filen, skal du angive parameteren <filtering>true</filtering>
.
Eksempel:
<resource>
<directory>src/main/resources/properties</directory>
<filtering>true</filtering>
<includes>
<include>**/*. properties </include>
</includes>
</resource>
Flere detaljer om dette plugin kan findes på linket: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
2.3 maven-source-plugin source inclusion plugin
Et andet nyttigt plugin - maven-source-plugin
giver dig mulighed for at inkludere kildekoden til dine java-filer i samlingen. For hvad?
Sagen er, at udover webapplikationer samles et meget stort antal biblioteker ved hjælp af Maven. Mange Java-projekter følger konceptet open source og distribueres til Java-fællesskabet med deres egne kilder.
Hvorfor har du brug for et separat plugin? Hvorfor kan du ikke bare kopiere kilden, og det er det?
For det første kan kilderne i ethvert komplekst projekt opbevares flere steder.
For det andet bruges ofte generering af kilder baseret på xml-specifikationer, sådanne kilder skal også inkluderes i samlingen.
Og for det tredje kan du beslutte ikke at inkludere nogle særligt hemmelige filer i din samling.
Et eksempel på brug af 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 afhængighed kopi plugin
Du skal muligvis også smart kopiere afhængigheder (biblioteker), når du bygger et projekt. Et plugin bruges 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 eksempel er plugin'ets standardopførsel skrevet - kopiering af biblioteker til ${project.build.directory}/lib
.
Udførelsessektionen angiver, at plugin'et vil blive kaldt under byggefasen - pakke, mål - kopiafhængigheder.
Generelt har dette plugin et ret stort sæt mål, her er de mest populære:
1 | afhængighed:analysere | afhængighedsanalyse (brugt, ubrugt, specificeret, uspecificeret) |
2 | afhængighed:analyse-duplicate | identificere dobbelte afhængigheder |
3 | afhængighed: løse | opløsning (definition) af alle afhængigheder |
4 | dependency:resolve-plugin | tilladelse (definition) af alle plugins |
5 | afhængighed:træ | viser afhængighedstræet |
Du kan også indstille yderligere parametre i konfigurationssektionen:
1 | outputDirectory | Directory, hvor afhængigheder vil blive kopieret |
2 | overskriv udgivelser | Flag for at overskrive afhængigheder, når du opretter en udgivelse |
3 | overskriv Snapshots | Flag for at overskrive ikke-terminale afhængigheder, der har SNAPSHOT |
4 | overskriv hvis nyere | Flag for at overskrive biblioteker med nyere versioner |
Eksempel:
<configuration>
<outputDirectory>
${project.build.directory}/lib/
</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
Som standard <overWriteReleases>
, og <overWriteSnapshots>
er falsk, for <overWriteIfNewer>
er sandt.
GO TO FULL VERSION