Gradle-将文件夹和内容添加到测试资源

Gradle-将文件夹和内容添加到测试资源,gradle,Gradle,我想在Gradle项目的测试资源中包括一个文件夹及其内容 假设我有以下项目结构: projectRoot | - src | | - main | | \ - java | \ - test | \ - java \ - vars \ - *.groovy files vars文件夹包含几个*.groovy文件,我希望在构建项目时将这些文件包含在测试资源中。但是,测试资源必须包括vars文件夹,而不仅仅是该文件夹中的内容 如果我将以下块添加到我的buid.g

我想在Gradle项目的测试资源中包括一个文件夹及其内容

假设我有以下项目结构:

projectRoot
| - src
|   | - main
|   |   \ - java
|   \ - test
|       \ - java
\ - vars
    \ - *.groovy files
vars
文件夹包含几个
*.groovy
文件,我希望在构建项目时将这些文件包含在测试资源中。但是,测试资源必须包括
vars
文件夹,而不仅仅是该文件夹中的内容

如果我将以下块添加到我的
buid.gradle
文件中,它只将该文件夹的内容放在测试资源中:

sourceSets {
    test {
        resources {
            srcDir "vars"
        }
    }
}
这使得
build/resources/test
目录包含
vars
文件夹的内容,而不是
vars
文件夹本身:

projectRoot
| - build
|   \ - resources
|       \ - test
|           \ - *.groovy files
| - src
|   | - main
|   |   \ - java
|   \ - test
|       \ - java
\ - vars
    \ - *.groovy files
然而,我真正想要的是:

projectRoot
| - build
|   \ - resources
|       \ - test
|           \ - vars
|               \ - *.groovy files
| - src
|   | - main
|   |   \ - java
|   \ - test
|       \ - java
\ - vars
    \ - *.groovy files
(注意
vars
文件夹如何列在
build/resources/test
文件夹中)

我该怎么做


注意:我无法更改项目的目录结构(即
vars
文件夹不能有任何子目录,并且必须是顶级目录)。

也许类似的操作可以:

task copyConfig(type: Copy) {
    from "${project.projectDir}/vars/*.*"
    into "${project.projectDir}/.build/resources/test/vars"
    dependsOn processTestResources
}
copyConfig.mustRunAfter(processTestResources)
testClasses.dependsOn copyConfig
testClasses.mustRunAfter copyConfig

不幸的是,这行不通。
vars
文件夹不能包含任何子目录。还有其他想法吗?我只是重新阅读了这个问题并注意到。。。如果我想到一个解决方案,将会更新。我想知道是否有办法使用复制任务或类似的任务。添加脚本任务以创建目录并复制文件可能会起作用。在CopyingTestSourceSets之前,添加脚本任务可能会起作用。这是一项无效任务吗?抱歉,这是一个占位符。已更新。请参见本标题上方的pic,我尝试在processTestResources和TestClass之间插入任务。这将在编译和运行任何测试之前,在复制其他资源的同时维护自定义资源文件夹