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

时间:2017-03-02 10:15:55

标签: java gradle bytecode-manipulation byte-code-enhancement

环境

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

问题

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

问题

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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