在自定义输出目录下添加gradle资源

时间:2016-08-26 06:50:04

标签: java gradle

我有这样的项目结构(使用gradle 2.11):

submodule1
|
- src
  |
  - main
    |
    - resources
      |
      - file1
submodule2
|
- resources
  |
  - file2
  - file3

我通过以下方式向submodule1 resources添加了一些其他内容:

sourceSets {
   main {
      resources {
         srcDir("../submodule2/resources")
      }
   }
}

是否有一种简单的方法可以为submodule2的资源指定自定义输出路径?目前,当我对它进行jar时,所有资源文件file1file2等都将放在顶层的jar中。我希望submodule1文件保持在最高级别,submodule2资源放在jar中的自定义路径下,即submodule2resources

1 个答案:

答案 0 :(得分:1)

您需要在构建jar文件期间过滤文件。使用DSLjar文件的build.gradle封闭中完成了此操作。这里的问题在于,当您添加源集并准备好jar时,有关给定文件来源的信息将丢失 - 所有文件现在都属于submodule1 - 因此需要一个解决方法:

apply plugin: 'java'

project.ext.sm2Resources = project.file("../sm2/src/main/resources")

sourceSets {
    main {
        resources {
            srcDir(sm2Resources)
        }
    }
}

jar {
  eachFile { f ->
      if(new File(sm2Resources, f.file.name).exists()) {
        f.path = "sm2/$f.name"
      }
  }
}

查看demo