如何在gradle中的测试源集中包含所有src/test/resources/**和src/main/java/**/*.html?

Dea*_*ler 5 gradle

我有以下内容,并认为它是'添加'到我的sourceSet但实际上只是修改它..

sourceSets {
    test {
        resources {
            srcDirs = ["src/main/java"]
            includes = ["**/*.html"]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我真正想要的是src/test/resources/**以及上面的内容.我不想从src/test/resources中排除任何文件,而上面只包含我放在那里的任何目录中的html.

谢谢,迪恩

Mic*_*ter 5

下面将说明使用的技术main(以便可以验证):

apply plugin: 'java'

sourceSets {
    myExtra {
        resources {
            srcDirs "src/main/java"
            includes = ["**/*.html"]
        }
    }
    main {
        resources {
            source myExtra.resources
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

通过命令行进行概念验证:

bash$ ls src/main/java
abc.html
xyz.txt

bash$ ls src/main/resources/
def.html
ijk.txt

bash$ gradle clean jar
bash$ jar tf build/libs/myexample.jar
META-INF/
META-INF/MANIFEST.MF
abc.html
def.html
ijk.txt
Run Code Online (Sandbox Code Playgroud)

您的情况请更改maintest。这个答案是通过Gradle Doc for SourceDirectorySet发现的。有趣的是,对于3.0,它包含一个TODO:

TODO-为单个源目录配置包含/排除

这意味着这种变通方法(通过此方法)可能是必需的。