Cómo trabajar con recursos en módulos Java 9
Construí un pequeño proyecto java 9 (estilo hola mundo) usando gradle y elcomplemento de rompecabezas.
Para una prueba de junit intenté acceder a algún archivo como recurso, peroclassLoader.getResource(filename)
no puede ubicar el archivo.
Usualmente pones el archivo comosrc/test/resources/foo.txt
y acceder a él como/foo.txt
, pero con Java 9 parece que las cosas cambiaron y los recursos son (similares a las clases)encapsulado en módulos.
¿Dónde exactamente tengo que poner el archivo de recursos para que Gradle lo empaquete correctamente?
¿Cuál es la forma correcta de acceder a ese archivo después en la prueba?
¿Cuál es la documentación que olvidé leer? :)
Para ser más precisos, configuré un pequeñoproyecto de prueba. Utilizargit clone https://github.com/michas2/java_9_resource_test.git
y hacer ungradle build
luego después de cambiar a ese directorio. (Estoy usando Gradle 4.6, pero ese no debería ser el problema).
La estructura se ve así:
.
├── build.gradle
└── src
├── main
│ └── java
│ ├── module-info.java
│ └── resourceTest
│ └── Main.java
└── test
├── java
│ └── resourceTest
│ └── MainTest.java
└── resources
└── resourceTest
└── test.txt
Intento acceder al recurso usandothis.getClass().getResource("/resourceTest/test.txt")
, que desafortunadamente danull
en cambio.