Gradle多项目构建-将全球资源放在哪里?

Gradle多项目构建-将全球资源放在哪里?,gradle,log4j,log4j2,Gradle,Log4j,Log4j2,我的Gradle多项目解决方案如下所示: ---Root -----SubProject1 -----SubProject2 -----SubProject3 为了避免重复,我希望对所有子项目使用相同的log4j2记录器配置文件(“log4j2.xml”) 是否有可能将其放在某个地方,从而影响所有子项目?我更喜欢对每个子项目透明的解决方案 例如,在.NET解决方案中,我能够将log4net配置放入main app.config,并将其应用于解决方案中的所有项目。我想在Java中实现类似的功能…

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

---Root
-----SubProject1
-----SubProject2
-----SubProject3
为了避免重复,我希望对所有子项目使用相同的log4j2记录器配置文件(“log4j2.xml”)

是否有可能将其放在某个地方,从而影响所有子项目?我更喜欢对每个子项目透明的解决方案


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

您可以使用
子项目
块从根项目
build.gradle
脚本配置子项目(请参阅)

例如,您可以配置
sourceset
,以便将一些“共享资源”目录附加到子项目的
sourceset.main.resources
属性,如下所示:

根项目的
build.gradle

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

在根项目中,您可以创建一个
共享资源
,它将包含所有共享配置文件,如
log4j.xml

我了解依赖关系,但配置文件呢?我提到“log4j2.xml”,这里有一个类似的问题,建议的解决方案是:@M.Ricciuti:这很有用,但对子项目来说并不透明(建议的解决方案建议编辑每个子项目的build.gradle,这是我宁愿避免的)我根据这个建议的解决方案更新了我的答案:您可以直接在根项目构建中配置
sourceset
,而无需更新子项目的构建脚本。