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

2019年1月8日 10点热度 0条评论

环境

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

问题

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

问题

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

想法

  • 将描述文件放在src/main/java中。不是很“干净”,但可以解决。可悲的是gradle忽略了那些文件。我试图以某种方式包括它们,但尚未使它起作用。
  • 临时将描述文件复制到正确的位置。也不是很“干净”的方式
  • 解决方案如下:

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

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

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