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

环境

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

问题

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

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

思路

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

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

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

那么带有类文件的文件夹( build/classes/main )也将包含你的资源。