当我有一个由多个模块组成的 Maven 应用程序并且每个模块都包含一个 log4j.properties 文件时,会发生什么情况,它们是否会被某个模块合并或覆盖(如果是,是哪个模块)?
更新:按照你的建议,我现在已经在我的 poms 中排除了这样的额外属性:
<dependency>
[...]
<excludes><exclude>**/log4j.properties</exclude></excludes>
</dependency>
P.S.:但是,Maven 无法识别“excludes”标签,“exclusions”仅适用于依赖项,不适用于资源。
更新
刚刚在 log4j in a multi-module Maven project 中发现我可以将 log4j.properties 放在 src/test/resources 中,这样它们就不会包含在可执行模块中!
最佳答案
它们永远不会合并。通常,log4j.properties 文件会被覆盖,您无法准确分辨是哪一个。
这取决于容器加载Jar文件的顺序。
因此建议在应用程序的核心模块中为其他子模块设置一个 log4j.properties 和多个 appender。
但是它会在独立测试/使用子模块时产生问题,因为它会在单独测试时停止记录。在我们的例子中,pom 的源代码控制版本总是用于排除资源(这将在构建 jar 时排除属性文件)。然而在开发者本地,开发者过去常常在 POM 中注释掉排除项并且可以独立工作。
关于java - 多个 Maven 模块中的 log4j.properties?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912417/