plugin Mueva un archivo de texto a la carpeta de destino cuando compile un proyecto de Maven




netbeans plugins (4)

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>

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?


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>

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>

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>






netbeans-7