Como trabalhar com recursos nos módulos Java 9
Eu construí um projeto java 9 pequeno (olá mundo estilo) usando gradle e oplugin de quebra-cabeças.
Para um teste de junção, tentei acessar algum arquivo como um recurso, masclassLoader.getResource(filename)
não consegue localizar o arquivo.
Geralmente você coloca o arquivo comosrc/test/resources/foo.txt
e acesse como/foo.txt
, mas com o Java 9 parece que as coisas mudaram e os recursos são (semelhantes às classes)encapsulado em módulos.
Onde exatamente eu tenho que colocar o arquivo de recurso para gradle para empacotá-lo corretamente?
Qual é a maneira correta de acessar esse arquivo posteriormente no teste?
Qual é a documentação que esqueci de ler? :)
Para ser mais preciso, montei um pequenoprojeto de teste. Usargit clone https://github.com/michas2/java_9_resource_test.git
e faça umgradle build
depois de mudar para esse diretório. (Estou usando o gradle 4.6, mas esse não deve ser o problema.)
A estrutura fica assim:
.
├── build.gradle
└── src
├── main
│ └── java
│ ├── module-info.java
│ └── resourceTest
│ └── Main.java
└── test
├── java
│ └── resourceTest
│ └── MainTest.java
└── resources
└── resourceTest
└── test.txt
Eu tento acessar o recurso usandothis.getClass().getResource("/resourceTest/test.txt")
, que infelizmente dánull
em troca.