CodeGym/Java kursus/Modul 3/Håndtering af filer, mens du bygger et Maven-projekt

Håndtering af filer, mens du bygger et Maven-projekt

Ledig

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/resourcestil 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.propertiesden 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-plugingiver 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.

Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu