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

标签 java gradle

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

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

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

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

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

最佳答案

您需要在构建 jar 文件期间过滤文件。它是使用 DSLbuild.gradle 文件中的 jar 闭包中完成的。 。这里的问题在于,当您添加源集并准备好 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 .

关于java - 在自定义输出目录下添加 gradle 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39160014/

相关文章:

java - 在 Java 中使用 HashMap 创建真实的映射

java - Box Java SDK 将标签设置为文件夹

java - 如何添加 onClickListener 而不是替换监听器?

java - 在 Java 中为数组赋值?

android - OpenCv 与 Android studio 2.2+ 使用带有 cmake 的新 gradle - 未定义引用

java - Actor 重试,具有退避和重试限制

intellij-idea - 未找到 cucumber 步骤定义 - IntelliJ Gradle

java - 所有风格的 BuildConfig.class

maven - gradle始终使用{user.home}/repository作为Maven本地缓存

kotlin - Kotlin类的Gradle集成测试任务