CodeGym/Java kurs/Modul 3/Hantera filer samtidigt som du bygger ett Maven-projekt

Hantera filer samtidigt som du bygger ett Maven-projekt

Nivå, Lektion
Tillgängliga

2.1 maven-resources-plugin kopieringsresurser plugin

Om du bygger en webbapplikation kommer du bara att ha en massa olika resurser i den. Dessa är jar-bibliotek, jsp-servlets, inställningsfiler. Och naturligtvis är detta ett gäng statiska filer som , , , htmlsamt cssolika jsbilder.

Som standard, när du bygger ett projekt, kommer Maven helt enkelt att kopiera alla dina filer från mappen src/main/resourcestill målkatalogen. Om du vill göra ändringar i detta beteende, kommer plugin-programmet att hjälpa dig maven-resources-plugin.

Exempelkod för ett sådant 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>

Denna plugin kommer att anropas under valideringsfasen. Med hjälp av taggen <outputDirectory>kan du ställa in katalogen där plugin-programmet ska kopiera resurserna som anges i <resources>. Och det är här pluginet kan utvecklas i all sin kraft.

2.2 Filtrera resurser med maven-resources-plugin

Plugin-resurser kan specificeras inte bara i form av filer, utan omedelbart i form av kataloger. Dessutom kan en mask läggas till katalogen, som anger vilka filer från den som kommer att inkluderas i denna resurs.

Exempel:


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

Två asterisker som en mask representerar valfritt antal kataloger . I exemplet ovan kommer alla png-filer som finns i katalogen src/main/resources/images(och dess underkataloger) att tas som resursdata.

Om du vill utesluta vissa filer kan du använda exclude. Exempel:

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

Taggar tillämpas sekventiellt: först kommer inkluderingsfilerna som anges i inkluderingsfilerna att läggas till i resursen, och sedan exkluderas exkluderingsfilerna från den här listan.

Men det är inte allt. Insticksprogrammet kan titta inuti filer (om de är text, förstås). Och lägg till exempel till application.propertiesden nödvändiga versionen av sammansättningen till filen. För att pluginet ska kunna behandla innehållet i filen måste du ange parametern <filtering>true</filtering>.

Exempel:

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

Mer information om detta plugin finns på länken: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 maven-source-plugin source inclusion plugin

En annan användbar plugin - maven-source-pluginlåter dig inkludera källkoden för dina java-filer i sammansättningen. För vad?

Saken är den att förutom webbapplikationer samlas ett väldigt stort antal bibliotek med Maven. Många Java-projekt följer konceptet med öppen källkod och distribueras till Java-communityt med sina egna källor.

Varför behöver du ett separat plugin? Varför kan du inte bara kopiera källan och det är allt?

För det första, i alla komplexa projekt, kan källorna lagras på flera ställen.

För det andra används ofta generering av källor baserade på xml-specifikationer, sådana källor måste också ingå i sammanställningen.

Och för det tredje kan du bestämma dig för att inte inkludera några särskilt hemliga filer i din sammansättning.

Ett exempel på hur du använder plugin-programmet 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-dependency-plugin dependency copy plugin

Du kan också behöva kopiera beroenden (bibliotek) smart när du bygger ett projekt. En plugin används för detta maven-dependency-plugin.

Exempel:

<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 det här exemplet är standardbeteendet för plugin-programmet skrivet - kopiering av bibliotek till ${project.build.directory}/lib.

Exekveringssektionen anger att pluginet kommer att anropas under byggfasen - paket, mål - kopieringsberoenden.

I allmänhet har detta plugin en ganska stor uppsättning mål, här är de mest populära:

1 beroende: analysera beroendeanalys (använd, oanvänd, specificerad, ospecificerad)
2 beroende: analysera-duplicera identifiera dubbla beroenden
3 dependency:resolve upplösning (definition) av alla beroenden
4 dependency:resolve-plugin tillstånd (definition) av alla plugins
5 beroende:träd visar beroendeträdet

Du kan också ställa in ytterligare parametrar i konfigurationssektionen:

1 outputDirectory Katalog där beroenden kommer att kopieras
2 overWriteReleases Flagga för att skriva över beroenden när du skapar en release
3 overWriteSnapshots Flagga för att skriva över icke-terminala beroenden som har SNAPSHOT
4 overWriteIfNewer Flagga för att skriva över bibliotek med nyare versioner

Exempel:


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

Som standard <overWriteReleases>, och <overWriteSnapshots>är falskt, för <overWriteIfNewer>är sant.

Kommentarer
  • Populär
  • Ny
  • Gammal
Du måste vara inloggad för att lämna en kommentar
Den här sidan har inga kommentarer än