【问题标题】:Gradle multi-project build - where to put global resources?Gradle 多项目构建 - 将全球资源放在哪里?
【发布时间】:2019-05-18 23:24:27
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 这里有一个类似的问题,提出了解决方案:stackoverflow.com/a/51991906/6899896
  • @M.Ricciuti:这很有用,但对子项目不透明(建议的解决方案建议编辑每个子项目的 build.gradle - 我宁愿避免)
  • 我根据这个建议的解决方案更新了我的答案:您可以直接在根项目构建中配置sourceSets,无需更新子项目的构建脚本。

标签: gradle log4j log4j2


【解决方案1】:

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

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

根项目的build.gradle

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

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

【讨论】:

  • 我了解依赖,但是配置文件呢?我指的是“log4j2.xml”
猜你喜欢
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多