Maven (éxito seguro): recursos de prueba copia de src / test / java
-
26-09-2019 - |
Pregunta
Maven de éxito seguro (pruebas) plug-in mvn test-compile
copia archivos en src/test/resources
a target/test-classes
. Se compila .java
en src/test/java
, y copia los archivos compilados a .class
target/test-classes
.
Pero no copia los recursos de src/test/java
, y es más conveniente ser capaz de poner los recursos de pruebas en el mismo directorio que las clases .java
que son recursos para, que en una jerarquía paralela en src/test/resources
.
¿Es posible obtener Maven para copiar recursos de src/test/java
?
Solución
La copia de recursos se hace todo por el experto en recursos-plugin, y si usted lee el documento del mismo verá cómo agregar copia de los recursos de src / test / java.
http://maven.apache.org/plugins/maven-resources- Programas / testResources-mojo.html para el objetivo de la prueba de los recursos, que se incluye en el ciclo de vida del defecto.
Y a continuación, ver http://maven.apache.org/pom.html , y el aspecto de <testResources>
.
Otros consejos
bmargulies dio la respuesta , pero vamos a llenar en algunos detalles.
<testresources>
se puede añadir al nodo <build>
de POM del proyecto, como este:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
</testResource>
</testResources>
Esa copia todo en src/test/java
- incluyendo el código fuente .java
, lo que no queremos.
También (como bmargulies solamente insinuados) anula y sustituye a la configuración por defecto <testResources>
en el POM matriz estándar que todos los demás hereda de POM (a menos que se cambie la herencia). El copias matrices estándar src/test/resources
, por lo que el sobreescribiendo, no conseguimos que copian, como de costumbre, lo que no queremos. (En particular, toda mi razón para hacer esto es utilizar unitils, que quiere que el archivo copiado unitils.properties
-. Y eso es (para mí, de todos modos) en src/test/resources
Así que volver a añadir src/test/resources
:
<testResources>
<testResource>
<directory>${project.basedir}/src/test/java</directory>
</testResource>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
</testResources>
Eso copias en el orden indicado, de manera que para los archivos que existen en tanto /src/test/java
(y subdirectorios) y en /src/test/resources
(y subdirectorios), la versión src/test/resources
es el que termina en test-classes
.
Ahora sólo tenemos que 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>
La única manera en que funcionaba para mí cuando me puse la configuración de la prueba en la carpeta src/test/resources
(análogo de src/test/java
de archivos de origen). Los archivos de esta carpeta se copia en la carpeta target/test-classes
que está en la ruta de clase durante la ejecución 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>
¿Es posible obtener copia de Maven recursos de src / test / java?
Sí, esto se logra fácilmente con la antRun complemento .