如何使用gradle向sourceSet添加资源?

 去弥O补从前所有不完整 发布于 2023-02-08 16:23

目前我有以下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"中的文件.如何正确添加资源?谢谢!

2 个回答
  • 我仔细看看你的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的结果:

    在此输入图像描述

    希望能帮助到你 :)

    2023-02-08 16:25 回答
  • 构建脚本中使用的语法是正确的.我不清楚为什么要为两个源集添加相同的资源目录,以及为什么你声称它在一个案例中不起作用.

    srcDir "foo"添加另一个目录.如果您想要替换默认目录,请srcDirs = [ "foo" ]改用.但是,这不能解决手头的问题.

    很高兴看到加载资源的代码,以排除任何问题.

    2023-02-08 16:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有