CodeGym/Java Course/Module 3/Bestanden beheren tijdens het bouwen van een Maven-projec...

Bestanden beheren tijdens het bouwen van een Maven-project

Beschikbaar

2.1 maven-resources-plug-in plug-in bronnen kopiëren

Als u een webapplicatie bouwt, heeft u gewoon een heleboel verschillende bronnen. Dit zijn jar-bibliotheken, jsp-servlets, instellingenbestanden. En dit zijn natuurlijk een heleboel statische bestanden zoals html, css, js, evenals verschillende afbeeldingen.

Bij het bouwen van een project kopieert Maven standaard al uw bestanden van de map src/main/resourcesnaar de doelmap. Als u dit gedrag wilt wijzigen, zal de plug-in u helpen maven-resources-plugin.

Voorbeeldcode voor zo'n plug-in:

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

Deze plug-in wordt aangeroepen tijdens de validatiefase. Met behulp van de tag <outputDirectory>kunt u de map instellen waar de plug-in de bronnen moet kopiëren die zijn opgegeven in het <resources>. En dit is waar de plug-in zich in al zijn macht kan ontvouwen.

2.2 Bronnen filteren met de plug-in maven-resources

Bronnen voor plug-ins kunnen niet alleen in de vorm van bestanden worden opgegeven, maar ook direct in de vorm van mappen. Bovendien kan een masker aan de map worden toegevoegd, dat specificeert welke bestanden ervan in deze bron zullen worden opgenomen.

Voorbeeld:


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

Twee sterretjes als masker vertegenwoordigen een willekeurig aantal mappen . In het bovenstaande voorbeeld worden alle png-bestanden in de map src/main/resources/images(en zijn submappen) als brongegevens gebruikt.

Als u sommige bestanden wilt uitsluiten, kunt u de exclude. Voorbeeld:

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

Tags worden achtereenvolgens toegepast: eerst worden de include-bestanden die zijn opgegeven in de include-bestanden toegevoegd aan de bron en vervolgens worden de exclusief-bestanden uitgesloten van deze lijst.

Maar dat is niet alles. De plug-in kan in bestanden kijken (als het natuurlijk tekst is). En voeg bijvoorbeeld application.propertiesde gewenste versie van de assembly toe aan het bestand. Om ervoor te zorgen dat de plug-in de inhoud van het bestand verwerkt, moet u de parameter specificeren <filtering>true</filtering>.

Voorbeeld:

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

Meer details over deze plug-in vindt u op de link: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 maven-source-plug-in plug-in voor bronopname

Nog een handige plug-in - maven-source-pluginhiermee kunt u de broncode van uw Java-bestanden opnemen in de assembly. Waarvoor?

Het punt is dat naast webapplicaties een zeer groot aantal bibliotheken wordt samengesteld met behulp van Maven. Veel Java-projecten volgen het concept van open-source en worden met hun eigen bronnen gedistribueerd naar de Java-gemeenschap.

Waarom heb je een aparte plug-in nodig? Waarom kun je niet gewoon de bron kopiëren en dat is alles?

Ten eerste kunnen de bronnen in elk complex project op verschillende plaatsen worden opgeslagen.

Ten tweede wordt vaak gebruik gemaakt van het genereren van bronnen op basis van xml-specificaties, dergelijke bronnen moeten ook in de assemblage worden opgenomen.

En ten derde kun je besluiten om geen bijzonder geheime bestanden in je assembly op te nemen.

Een voorbeeld van het gebruik van de plug-in 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 maven-afhankelijkheid-plug-in afhankelijkheid kopiëren plug-in

Mogelijk moet u ook slim afhankelijkheden (bibliotheken) kopiëren bij het bouwen van een project. Hiervoor wordt een plug-in gebruikt maven-dependency-plugin.

Voorbeeld:

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

In dit voorbeeld is het standaardgedrag van de plug-in geschreven - bibliotheken kopiëren naar het ${project.build.directory}/lib.

In de uitvoeringssectie staat dat de plug-in wordt aangeroepen tijdens de bouwfase - pakket, doel - kopieerafhankelijkheden.

Over het algemeen heeft deze plug-in een vrij groot aantal doelen, hier zijn de meest populaire:

1 afhankelijkheid: analyseren afhankelijkheidsanalyse (gebruikt, ongebruikt, gespecificeerd, niet gespecificeerd)
2 afhankelijkheid: analyseren-dupliceren het identificeren van dubbele afhankelijkheden
3 afhankelijkheid: oplossen resolutie (definitie) van alle afhankelijkheden
4 afhankelijkheid: oplossen-plug-in toestemming (definitie) van alle plug-ins
5 afhankelijkheid:boom de afhankelijkheidsboom weergeven

U kunt ook aanvullende parameters instellen in het configuratiegedeelte:

1 outputDirectory Directory waar afhankelijkheden worden gekopieerd
2 overWriteReleases Vlag om afhankelijkheden te overschrijven bij het maken van een release
3 overWriteSnapshots Vlag om niet-terminalafhankelijkheden met SNAPSHOT te overschrijven
4 overWriteIfNewer Markeer om bibliotheken te overschrijven met nieuwere versies

Voorbeeld:


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

Standaard <overWriteReleases>, en <overWriteSnapshots>is onwaar, want <overWriteIfNewer>is waar.

Opmerkingen
  • Populair
  • Nieuw
  • Oud
Je moet ingelogd zijn om opmerkingen te kunnen maken
Deze pagina heeft nog geen opmerkingen