如何用gradle复制类文件夹中的资源文件?

How to copy resource files in classes folder with gradle?

环境

我正在使用需要字节码检测的第三方库。执行字节码检测的工具需要一些描述文件,并且这些文件必须与编译的 .class 文件位于相同的文件夹结构中。这些文件仅在编译时是必需的。

问题

我认为 gradle 会将所有文件(资源和 class)暂时放在同一个文件夹中,然后从该文件夹创建一个 jar。但似乎 gradle 在组装 jar 之前有两个不同的资源和 class 文件位置。 如前所述,用于代码检测的第三方工具需要与 class 文件相同的文件夹结构中的描述文件。

问题

简单地说:我该如何解决这个问题?

想法

  1. 将描述文件放在 src/main/java 中。不是很 "clean" 但可能是一个解决方案。遗憾的是 gradle 忽略了这些文件。我试图以某种方式包括它们,但还没有让它工作。
  2. 暂时将描述文件复制到正确的位置。也不是很 "clean" 的方式

您可以通过以下方式重定向资源输出目录:

sourceSets {
  main {
    output.resourcesDir = "build/classes/main"
  }
  test {
    output.resourcesDir = "build/classes/test"
  }
}

那么包含 class 个文件 (build/classes/main) 的文件夹也将包含您的资源。