plugin para features extensiones description descargar configurar maven build-automation netbeans-7

maven - para - netbeans gradle



Mueva un archivo de texto a la carpeta de destino cuando compile un proyecto de Maven (4)

Tengo una versión ligeramente diferente de la pregunta que hice recientemente. Tengo un proyecto de Maven bajo Netbeans 7.3 , que no tiene ningún archivo build.xml para configurar las opciones de construcción, mientras que existe el pom.xml que uso para importar otras bibliotecas. Ahora, tengo un archivo de texto (digamos textfile.txt ) almacenado en la carpeta del proyecto en Netbeans 7.3 , por ejemplo

project folder textfile.txt src package package.subpackage MyClass.java

Cuando compilo obtengo una carpeta de target donde se coloca el archivo jar , por ejemplo

project folder textfile.txt target classes generated-sources ....etc test-classes MyProject.jar src package package.subpackage MyClass.java

¿Cómo puedo hacer que el archivo textfile.txt se copie en la carpeta de destino cuando compilo el proyecto de Maven?


La forma más sencilla es usar algún recurso como sé (información adicional sobre la configuración de recursos que puede encontrar aquí: https://maven.apache.org/plugins/maven-resources-plugin/ ):

<build> <plugins> <!-- your plugins, including or not maven-resource-plugin --> </plugins> <resources> <resource> <filtering>true</filtering><!-- if it is neccessary --> <directory>${project.basedir}</directory><!-- from --> <targetPath>${project.build.directory}</targetPath><!-- to --> <includes><!-- what --> <include>textfile.txt</include> </includes> </resource> </resources> </build>


Para construir mis archivos de configuración y actualizar la producción, esto funcionó para mí:

<build> <resources> <resource> <directory>${project.basedir}</directory><!-- from --> <targetPath>${project.build.directory}</targetPath><!-- to --> <includes><!-- what --> <include>**/*.properties</include> </includes> </resource> </resources> </build>


Para tener un control absoluto de la salida de su compilación, puede usar el "Apache Maven Assembly Plugin". Puedes definir casi todo (formato, subcarpetas ...).

El Complemento de ensamblaje para Maven está destinado principalmente a permitir que los usuarios agreguen los resultados del proyecto junto con sus dependencias, módulos, documentación del sitio y otros archivos en un único archivo distribuible.

Más información

Tienes que instalar el plugin en tu archivo pom:

<plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptors> <descriptor>src/main/assembly/yourassembly.xml</descriptor> </descriptors> </configuration> </plugin> </plugins> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>x.x</version> <configuration> <descriptors> <descriptor>src/main/assembly/yourassembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <!-- this is used for inheritance merges --> <phase>package</phase> <!-- append to the packaging phase. --> <goals> <goal>single</goal> <!-- goals == mojos --> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement>

En su caso, el descriptor "yourassembly.xml" sería el siguiente:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> <id>yourassembly</id> <formats> <format>tar.gz</format> <format>dir</format> </formats> <fileSets> <fileSet> <directory>${project.basedir}</directory> <includes> <include>README*</include> <include>LICENSE*</include> <include>NOTICE*</include> </includes> <useDefaultExcludes>true</useDefaultExcludes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>/</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${basedir}</directory> <outputDirectory>/</outputDirectory> <includes> <include>textfile.txt</include> </includes> </fileSet> <dependencySets> <dependencySet> <outputDirectory>lib</outputDirectory> <unpack>false</unpack> </dependencySet> </dependencySets> </fileSets> </assembly>


Una primera forma es colocar los archivos en src/main/resources que es la carpeta dedicada a almacenar los recursos cumplidos, es decir, los recursos incluidos en el archivo jar (por ejemplo, imágenes para los iconos).

Si necesita hacer que el archivo de configuración se distribuya con el jar, pero separado por él, debe editar el archivo pom.xml . Una posible respuesta es agregar el siguiente complemento entre las etiquetas <plugins> y </plugins> .

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <executions> <execution> <phase>test</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <echo>Using env.test.properties</echo> <copy file="textfile.txt" tofile="${basedir}/target/textfile.txt"/> </tasks> </configuration> </execution> </executions> </plugin>

Además, como puede leer here , también puede importar todos los recursos de un directorio de "entrada" a un directorio de "salida" dentro del destino mediante el uso del complemento dedicado, por ejemplo:

<plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>copy-resources</id> <!-- here the phase you need --> <phase>validate</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/output</outputDirectory> <resources> <resource> <directory>input</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin>