Gradle 多项目构建——全局资源放哪?

Gradle multi-project build - where to put global resources?

我有 Gradle 多项目解决方案,如下所示:

---Root
-----SubProject1
-----SubProject2
-----SubProject3

为了避免重复,我想对所有子项目使用相同的 log4j2 记录器配置文件 ("log4j2.xml")。

是否可以将它放在某个地方以便影响所有子项目?我更喜欢对每个子项目透明的解决方案。

例如,在 .NET 解决方案中,我能够将 log4net 配置放入主 app.config,并将其应用于解决方案中的所有项目。我想在 Java...

中实现类似的目标

您可以使用 subprojects 块从根项目 build.gradle 脚本配置子项目(参见 https://docs.gradle.org/current/dsl/org.gradle.api.Project.html#org.gradle.api.Project:subprojects(groovy.lang.Closure)

例如,你可以配置sourceSets,以便将一些"shared resources"目录附加到子项目的sourceSets.main.resources属性,如下:

根项目的build.gradle

subprojects {
    apply plugin: 'java'
    main {
        resources {
            srcDirs += "../shared-resources"
        }
    }
}

在您的根项目中,您可以创建一个 shared-resources 来包含所有共享配置文件,例如 log4j.xml