CodeGym/Java Course/Modulo 3/Gestione dei file durante la creazione di un progetto Mav...

Gestione dei file durante la creazione di un progetto Maven

Disponibile

2.1 plug-in maven-resources-plugin per copiare le risorse

Se stai costruendo un'applicazione web, avrai solo un sacco di risorse diverse al suo interno. Queste sono librerie jar, servlet jsp, file di impostazioni. E, naturalmente, questo è un mucchio di file statici come html, css, js, oltre a varie immagini.

Per impostazione predefinita, durante la creazione di un progetto, Maven copierà semplicemente tutti i file dalla cartella src/main/resourcesalla directory di destinazione. Se desideri apportare modifiche a questo comportamento, il plug-in ti aiuterà maven-resources-plugin.

Codice di esempio per tale 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>

Questo plugin verrà chiamato durante la fase di convalida. Utilizzando il tag, <outputDirectory>puoi impostare la directory in cui il plug-in deve copiare le risorse specificate nel file <resources>. Ed è qui che il plugin può dispiegarsi in tutta la sua forza.

2.2 Filtrare le risorse con il plugin maven-resources

Le risorse del plug-in possono essere specificate non solo sotto forma di file, ma immediatamente sotto forma di directory. Inoltre, è possibile aggiungere una maschera alla directory, che specifica quali file da essa verranno inclusi in questa risorsa.

Esempio:


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

Due asterischi come maschera rappresentano un numero qualsiasi di directory . Nell'esempio precedente, tutti i file png contenuti nella directory src/main/resources/images(e nelle sue sottodirectory) verranno presi come dati di risorsa.

Se si desidera escludere alcuni file, è possibile utilizzare l'estensione exclude. Esempio:

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

I tag vengono applicati in sequenza: in primo luogo, i file di inclusione specificati nei file di inclusione verranno aggiunti alla risorsa, quindi i file di esclusione verranno esclusi da questo elenco.

Ma non è tutto. Il plugin può guardare all'interno dei file (se sono di testo, ovviamente). E, ad esempio, aggiungi application.propertiesla versione richiesta dell'assembly al file. Affinché il plugin elabori il contenuto del file, è necessario specificare il parametro <filtering>true</filtering>.

Esempio:

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

Maggiori dettagli su questo plugin sono disponibili al link: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 plug-in di inclusione della fonte plug-in maven-source

Un altro plugin utile: maven-source-pluginti consente di includere il codice sorgente dei tuoi file java nell'assembly. Per quello?

Il fatto è che oltre alle applicazioni web, un numero molto elevato di librerie viene assemblato utilizzando Maven. Molti progetti Java seguono il concetto di open-source e sono distribuiti alla comunità Java con i propri sorgenti.

Perché hai bisogno di un plugin separato? Perché non puoi semplicemente copiare la fonte e basta?

Innanzitutto, in qualsiasi progetto complesso, le fonti possono essere archiviate in più posizioni.

In secondo luogo, viene spesso utilizzata la generazione di sorgenti basate su specifiche xml, anche tali sorgenti devono essere incluse nell'assembly.

E in terzo luogo, puoi decidere di non includere file particolarmente segreti nel tuo assembly.

Un esempio di utilizzo del plugin 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 plug-in per la copia della dipendenza del plug-in di dipendenza da maven

Potrebbe anche essere necessario copiare in modo intelligente le dipendenze (librerie) durante la creazione di un progetto. Per questo viene utilizzato un plug-in maven-dependency-plugin.

Esempio:

<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 questo esempio, il comportamento predefinito del plug-in è scritto: copiare le librerie nel file ${project.build.directory}/lib.

La sezione di esecuzione afferma che il plug-in verrà chiamato durante la fase di compilazione - pacchetto, obiettivo - dipendenze dalla copia.

In generale, questo plugin ha una serie di obiettivi abbastanza ampia, ecco i più popolari:

1 dipendenza: analizzare analisi delle dipendenze (usato, non utilizzato, specificato, non specificato)
2 dipendenza: analizzare-duplicare identificare le dipendenze duplicate
3 dipendenza: risoluzione risoluzione (definizione) di tutte le dipendenze
4 dipendenza: plugin di risoluzione permesso (definizione) di tutti i plugin
5 dipendenza: albero visualizzare l'albero delle dipendenze

È inoltre possibile impostare parametri aggiuntivi nella sezione di configurazione:

1 cartella di destinazione Directory in cui verranno copiate le dipendenze
2 overWrite Releases Flag per sovrascrivere le dipendenze durante la creazione di una versione
3 overWriteSnapshots Flag per sovrascrivere le dipendenze non terminali che hanno SNAPSHOT
4 overWriteIfNewer Contrassegna per sovrascrivere le librerie con le versioni più recenti

Esempio:


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

Per impostazione predefinita <overWriteReleases>, ed <overWriteSnapshots>è falso, per <overWriteIfNewer>è vero.

Commenti
  • Popolari
  • Nuovi
  • Vecchi
Devi avere effettuato l'accesso per lasciare un commento
Questa pagina non ha ancora commenti