目前我有以下build.gradle文件:
apply plugin: 'java' repositories { mavenCentral() } sourceSets { main { java { srcDir 'src/model' } resources { srcDir 'images/model' } } test { java { srcDir 'tests/model' } resources { srcDir 'images/model' // <=== NOT WORKING } } } dependencies { compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar') runtime fileTree(dir: 'libs', include: '*.jar') testCompile group: 'junit', name: 'junit', version: '4.+' }
我的存储库如果在这里:https://github.com/quinnliu/WalnutiQ
我的49个测试中有4个失败,因为文件夹"tests/model"中的测试需要文件夹"images/model"中的文件.如何正确添加资源?谢谢!
我仔细看看你的build.gradle,似乎路径有点偏.
您指定source as src/model
,但您的项目结构和Java源代码建议model
您的包名称,这意味着源声明应该是:
main { java { srcDir 'src' } }
测试相同:
test { java { srcDir 'tests' } }
现在,缺少资源.在您的代码中使用的ImageIO.read(getClass().getResource(BMPFileName))
getClass().getResource()
是使用资源的相对路径.要将资源保持在同一级别,您应该更新资源的声明并删除model
:
test { java { srcDir 'tests' } resources { srcDir 'images' } }
您可能还需要运行
./gradlew clean
在它工作之前.
这是更新的build.gradle的结果:
希望能帮助到你 :)
构建脚本中使用的语法是正确的.我不清楚为什么要为两个源集添加相同的资源目录,以及为什么你声称它在一个案例中不起作用.
srcDir "foo"
添加另一个目录.如果您想要替换默认目录,请srcDirs = [ "foo" ]
改用.但是,这不能解决手头的问题.
很高兴看到加载资源的代码,以排除任何问题.