可以为多模块 gradle 应用共享资源文件吗?

时间:2021-07-01 03:35:25

标签: java gradle logback

我想要一个在我的多模块 gradle 项目中共享的全局 logback xml 配置文件。

我的 logback.xml 文件位于 resources 下的 utilities 模块中。在 subprojects 块下根目录的 gradle 中,我添加了以下内容:

    sourceSets {
        main {
            resources {
                srcDirs += "utilities"
            }
        }
    }

我将其解释为文件副本,本质上是为了将实用程序的资源内容放入每个子项目中。记录器没有意识到这一点。在所有子项目中共享此配置的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

鉴于我不知道有什么方法可以用一些内置的魔法来做到这一点,我可能会将 logback.xml 放入一个 /static 内容目录中,在根 build.gradle 旁边,并在构建时让 gradle 将其复制到所有相关的 build/.../resources 目录。

如果您查看下图,它代表了 gradle 的构建生命周期阶段,您可以在 processResources(或 processTestResources)之后和 classes 之前插入任务来执行此操作:

enter image description here

来源:https://docs.gradle.org/current/userguide/java_plugin.html

您可能还需要通过一些内置的 gradle 引用动态地查找/使用 /build 目录,并将此任务添加到根 build.gradle 脚本中。

答案 1 :(得分:0)

对于那些感兴趣的人,我在我的 root.gradle 子项目块中做了以下操作。

    if (name != "utilities") {
        sourceSets {
            data {
                resources {
                    // Universal logback config for all sub-modules
                    srcDir "${project(':utilities').projectDir}/src/main/resources"
                    include "logback.xml"
                }
            }
            main {
                resources {
                    srcDirs += [data.resources]
                }
            }
        }
    }