【发布时间】:2022-10-05 20:25:12
【问题描述】:
我有一个项目,Gradle 没有将所有测试资源复制到输出目录,我不知道我做错了什么,或者这是否是 Gradle 中的错误。我设法创建了一个简化的测试用例;目录结构如下:
gradle/ # (contains Gradle wrapper files)
src/
hello/
Hello.java
tests/
hello/
hello.txt
foo/
bar.txt
build.gradle
gradlew
gradle.bat
build.gradle 的内容如下:
apply plugin: \'java\'
sourceSets {
main {
java.srcDirs = [\'src\']
resources.srcDirs = [\'src\']
resources.excludes = [\'**/*.java\']
}
test {
java.srcDirs = [\'tests\']
resources.srcDirs = [\'tests\']
resources.excludes = [\'**/*.java\']
}
}
task staging (type: Copy) {
from processResources
from processTestResources { include \'foo/\' } // Offending line
into \"${buildDir}/staging\"
}
task run (type: JavaExec) {
dependsOn staging
// [...]
}
当我运行时:
./gradlew processTestResources # or just ./gradlew test
只有来自 tests/foo 的资源被复制到输出文件夹。来自 tests/hello 的资源不会被复制。
但是,如果我在暂存任务中注释掉标记为“违规行”的行,那么所有资源都会被复制。
这是预期的行为吗?看起来 Gradle 正在尝试计算需要哪些资源,并且看到 staging 任务只需要测试/foo。但我没有运行staging 任务;我应该能够运行processTestResources 或test 任务并将所有测试资源复制到输出文件夹。
这是 Gradle 中的错误吗?
标签: java gradle build.gradle