在gradle中的一个源集中引用资源目录路径的正确方法是什么?

时间:2017-06-06 18:48:09

标签: gradle build.gradle

在我的build.gradle文件中,我为集成测试定义了一个单独的sourceSet:

sourceSets {
    integtest {
        java.srcDir 'src/integtest/java/io/attil/integration'
        resources.srcDir 'src/integtest/resources'
    }
}

我想在我的一个手动定义的任务中使用集成测试资源的路径(一个预先填充数据库以进行集成测试的任务; sql脚本位于上述资源文件夹中)。

我现在有以下解决方案:

task prefillDatabase {
    // ... snip!

        String sqlString = new File(sourceSets.integtest.resources.srcDirs.iterator().next().toString() + '/setup_integration_tests.sql').text


    // ... snip!
}

虽然这有效,但它非常麻烦。

是否有更好,更短的方法来实现同样的目标? (我正在寻找类似sourceSets.integtest.resources.srcDir的东西。)

1 个答案:

答案 0 :(得分:0)

我不确定这是不是那么冗长,但我认为这更正确

File file = sourceSets.integtest.resources.matching {
    include 'setup_integration_tests.sql'
}.singleFile

String sqlString = file.text

请参阅FileTree.matching(Closure)FileCollection.getSingleFile()

另外,这对我来说不合适

java.srcDir 'src/integtest/java/io/attil/integration'

我认为会是

java.srcDir 'src/integtest/java'
java.include 'io/attil/integration/**'