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




netbeans plugins (3)

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>

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>






netbeans-7