gradle - 使用gradle以编程方式添加资源文件夹以测试编译/运行时类路径

标签 gradle build.gradle

我们有一个用于60多个组件的主构建脚本。各个组件没有build.gradle文件。我想做的是以编程方式(在build.gradle主目录中)将资源文件夹添加到某些项目。该资源文件夹包含一个文件,该文件必须在运行单元测试时位于类路径中。我试图像这样在subprojects块中添加它:

subprojects { proj ->
...
 // this is the folder I need in the test task classpath
 def resdir = sprintf("%s\\resources", project(':Common').projectDir)
sourceSets {
  test {
     java {
       srcDir 'test'
     }
     resources {
       srcDirs = [resdir]
     }
   }
 }
}
...
   if(proj.name == "APROJECT"){
     proj.tasks['test'].getClasspath().each {
       logger.info "COMPILE CLASSPATH: {}", it
     }
   }
}

但是,如果我查询test任务的类路径(请参见上文),则在类路径中看不到该文件夹​​。另外,当然,由于文件夹不在类路径中,因此测试失败。

如果我将sourceSet更新放在component文件夹中的build.gradle中,它将按预期工作。

难道我做错了什么?如何将该文件夹放入类路径进行测试?

最佳答案

我无法通过动态更新sourceSet来使其正常工作,但是,我可以通过向testCompile依赖项添加必要的资源路径来使其正常工作。有关将类文件夹添加到依赖项的信息,请参见this

更新:这仍然不是理想的解决方案,因为“解决方案”仅将类文件夹添加到编译路径,而不将其视为资源(例如,将其复制到运行时类文件夹)。

更新#2:它实际上按预期方式工作。事实证明,不同的测试所引用的资源路径略有不同。如上所述,动态添加所有资源路径都可以!

关于gradle - 使用gradle以编程方式添加资源文件夹以测试编译/运行时类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60876480/

相关文章:

maven - Gradle compileGroovy java.lang.ExceptionInInitializerError

Android Studio Gradle 2.0.0-alpha1 构建错误

安卓工作室 : Integrating Butterknife?

java - 无法使用 Gradle 和 Intellij 导入 jar 文件依赖项

android - 无法合并dex,Android项目构建失败

Android Gradle - 在 gradle 中实现 Apache POI 时无法解决错误

maven - 关于使用Maven将 jar 上传到 Artifactory 的说明

java - gradle 的调试目标等同于用于传递参数的 run {} block

gradle - Nexus : Gradle plugin org. unbroken-dome.test-sets 未找到

jar 任务的 Gradle 输出作为依赖项