mic*_*has 3 java gradle java-9 java-module
我使用gradle和jigsaw插件构建了一个小型(hello world style)java 9项目.
对于junit测试,我尝试访问某个文件作为资源,但classLoader.getResource(filename)无法找到该文件.
通常你把文件作为src/test/resources/foo.txt并将其作为访问它/foo.txt,但是对于Java 9,它看起来像是变化了,资源(类似于类)封装在模块中.
我在哪里准备好将gradle资源文件正确打包?
之后在测试中访问该文件的正确方法是什么?
我忘记阅读的文件是什么?:)
更确切地说,我建立了一个小型测试项目.更改到该目录后使用git clone https://github.com/michas2/java_9_resource_test.git并执行gradle build.(我正在使用gradle 4.6,但这应该不是问题.)
结构如下所示:
.
??? build.gradle
??? src
??? main
? ??? java
? ??? module-info.java
? ??? resourceTest
? ??? Main.java
??? test
??? java
? ??? resourceTest
? ??? MainTest.java
??? resources
??? resourceTest
??? test.txt
Run Code Online (Sandbox Code Playgroud)
我试图访问资源使用this.getClass().getResource("/resourceTest/test.txt"),不幸的是,null作为回报.
这似乎是一个Gradle错误.
当我使用该-i选项运行Gradle时,我看到它正在执行以运行程序的实际命令包括:
--patch-module resourceTest=/home/vgr/src/java_9_resource_test/build/classes/java/test
Run Code Online (Sandbox Code Playgroud)
如您所见,它包括build/classes目录,但不包括build/resources目录.
由于构建将类和资源放在不同的位置,因此无法使用--patch-module.类和资源必须在一个文件树或一个.jar文件中.
无论这是org.gradle.java.experimental-jigsaw插件中的缺陷,还是Gradle本身,我都不确定.
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |