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

Jan*_*Jan 5 java bytecode-manipulation gradle byte-code-enhancement

环境

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

问题

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

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

思路

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

Fra*_*man 8

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

sourceSets {
  main {
    output.resourcesDir = "build/classes/main"
  }
  test {
    output.resourcesDir = "build/classes/test"
  }
}
Run Code Online (Sandbox Code Playgroud)

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