resources - pom - Maven(surefire): copie los recursos de prueba de src/test/java
resources build maven (4)
El plugin de Maven Safefire (testing) copia archivos en src / test / resources para target / test-classes. Compila .java en src / test / java y copia los archivos .class compilados en target / test-classes.
Pero no copia recursos de src / test / java, y es más conveniente poder poner recursos de prueba en el mismo directorio que las clases .java para las que son recursos, que en una jerarquía paralela en src / test / resources .
¿Es posible hacer que maven copie recursos de src / test / java?
¿Es posible hacer que maven copie recursos de src / test / java?
Sí, esto se logra fácilmente con el plugin antrun .
La única forma en que funcionó para mí cuando puse mi configuración de prueba en la carpeta src / test / resources (análogo de src / test / java para los archivos fuente). Los archivos de esta carpeta se copian a la carpeta target / test-classes que se encuentra en el classpath durante la ejecución de las pruebas. No sé por qué, pero la siguiente configuración no funcionó para mí:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
La copia de recursos se realiza mediante maven-resource-plugin, y si lee el documento de este, verá cómo agregar copia de recursos de src / test / java.
Consulte http://maven.apache.org/plugins/maven-resources-plugin/testResources-mojo.html para el objetivo de recursos de prueba, que se incluye en el ciclo de vida predeterminado.
Y luego vea http://maven.apache.org/pom.html , y busque <testResources>
.
bmargulies dio la respuesta, pero déjame completar algunos detalles.
<testresources>
se puede agregar al nodo <build>
del POM maven, así:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
</testResource>
</testResources>
Eso copia todo en src / test / java, incluido el código fuente .java, que no queremos.
También (como los bmargulios solo insinuados) anula y reemplaza la configuración predeterminada <testResources>
en el POM padre estándar del que heredan todos los otros POM (a menos que esa herencia se cambie). El padre estándar copia src / test / resources, por lo que al anular eso, no lo copiamos como de costumbre, lo que no queremos. (En particular, mi razón principal para hacer esto es usar unitils, que quiere copiar el archivo unitils.properties, y eso es (para mí, de todos modos) en src / test / resources.
Entonces, volvemos a agregar src / test / resources:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
Eso copia en el orden indicado, de modo que para los archivos que existen tanto en / src / test / java (y subdirectorios) como en / src / test / resources (y subdirectorios), la versión src / test / resources es la que termina arriba en las clases de prueba.
Ahora solo necesitamos no copiar los archivos .java:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>