CodeGym /Cursos Java /Módulo 3. Java Professional /Administrar archivos mientras se construye un proyecto Ma...

Administrar archivos mientras se construye un proyecto Maven

Módulo 3. Java Professional
Nivel 2 , Lección 1
Disponible

2.1 complemento de recursos de copia maven-resources-plugin

Si está creando una aplicación web, solo tendrá un montón de recursos diferentes en ella. Estas son bibliotecas jar, servlets jsp, archivos de configuración. Y, por supuesto, este es un montón de archivos estáticos como html, css, js, así como varias imágenes.

De forma predeterminada, al crear un proyecto, Maven simplemente copiará todos sus archivos de la carpeta src/main/resourcesal directorio de destino. Si desea realizar cambios en este comportamiento, el complemento lo ayudará maven-resources-plugin.

Código de muestra para dicho complemento:

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

Este complemento se llamará durante la fase de validación. Usando la etiqueta, <outputDirectory>puede establecer el directorio donde el complemento debe copiar los recursos especificados en el archivo <resources>. Y aquí es donde el complemento puede desplegarse en todo su poder.

2.2 Filtrado de recursos con maven-resources-plugin

Los recursos del complemento se pueden especificar no solo en forma de archivos, sino inmediatamente en forma de directorios. Además, se puede agregar una máscara al directorio, que especifica qué archivos se incluirán en este recurso.

Ejemplo:


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

Dos asteriscos como máscara representan cualquier número de directorios . En el ejemplo anterior, todos los archivos png contenidos en el directorio src/main/resources/images(y sus subdirectorios) se tomarán como datos de recursos.

Si desea excluir algunos archivos, puede utilizar la extensión exclude. Ejemplo:

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

Las etiquetas se aplican secuencialmente: primero, los archivos de inclusión especificados en los archivos de inclusión se agregarán al recurso y luego los archivos de exclusión se excluirán de esta lista.

Pero eso no es todo. El complemento puede buscar dentro de los archivos (si son de texto, por supuesto). Y, por ejemplo, agregue application.propertiesla versión requerida del ensamblaje al archivo. Para que el complemento procese el contenido del archivo, debe especificar el parámetro <filtering>true</filtering>.

Ejemplo:

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

Se pueden encontrar más detalles sobre este complemento en el enlace: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

Complemento de inclusión de fuente 2.3 maven-source-plugin

Otro complemento útil: maven-source-pluginle permite incluir el código fuente de sus archivos Java en el ensamblaje. ¿Para qué?

El caso es que, además de las aplicaciones web, se ensamblan una gran cantidad de bibliotecas utilizando Maven. Muchos proyectos de Java siguen el concepto de código abierto y se distribuyen a la comunidad de Java con sus propias fuentes.

¿Por qué necesita un complemento separado? ¿Por qué no puedes simplemente copiar la fuente y listo?

Primero, en cualquier proyecto complejo, las fuentes se pueden almacenar en varios lugares.

En segundo lugar, a menudo se utiliza la generación de fuentes basadas en especificaciones xml, dichas fuentes también deben incluirse en el ensamblaje.

Y en tercer lugar, puede decidir no incluir ningún archivo especialmente secreto en su ensamblaje.

Un ejemplo del uso del complemento 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 complemento de copia de dependencia maven-dependency-plugin

Es posible que también deba copiar de forma inteligente las dependencias (bibliotecas) al crear un proyecto. Para ello se utiliza un complemento maven-dependency-plugin.

Ejemplo:

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

En este ejemplo, se escribe el comportamiento predeterminado del complemento: copiar bibliotecas al archivo ${project.build.directory}/lib.

La sección de ejecución indica que se llamará al complemento durante la fase de compilación: paquete, objetivo, dependencias de copia.

En general, este complemento tiene un conjunto bastante grande de objetivos, aquí están los más populares:

1 dependencia: analizar análisis de dependencia (usado, no usado, especificado, no especificado)
2 dependencia: analizar-duplicar identificando dependencias duplicadas
3 dependencia: resolver resolución (definición) de todas las dependencias
4 dependencia: resolver-complemento permiso (definición) de todos los complementos
5 dependencia:árbol mostrando el árbol de dependencia

También puede establecer parámetros adicionales en la sección de configuración:

1 directorio de salida Directorio donde se copiarán las dependencias
2 overWriteReleases Marcar para sobrescribir dependencias al crear una versión
3 overWriteSnapshots Marcar para sobrescribir dependencias no terminales que tienen SNAPSHOT
4 overWriteIfNewer Marcar para sobrescribir bibliotecas con versiones más nuevas

Ejemplo:


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

Por defecto <overWriteReleases>, y <overWriteSnapshots>es falso, porque <overWriteIfNewer>es verdadero.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION