【问题标题】:How do I add resources to sourceSet with gradle?如何使用 gradle 向 sourceSet 添加资源?
【发布时间】:2013-12-22 17:45:35
【问题描述】:

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

【问题讨论】:

  • 链接的存储库已被删除。我看不到项目结构来理解答案。

标签: gradle build.gradle


【解决方案1】:

我仔细查看了您的 build.gradle,似乎路径有点偏离。

您将源指定为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 的结果:

希望对你有帮助:)

【讨论】:

    【解决方案2】:

    您的构建脚本中使用的语法是正确的。我不清楚为什么要将相同的资源目录添加到两个源集,以及为什么声称它在一种情况下不起作用。

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

    最好看看加载资源的代码,以排除任何问题。

    【讨论】:

    • 我无法复制和粘贴它,但如果你克隆我的 repo 并运行 gradle build 你会看到它。
    猜你喜欢
    • 2015-12-23
    • 2016-06-05
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多