java - 多个 Maven 模块中的 log4j.properties?

标签 java maven log4j

当我有一个由多个模块组成的 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/

相关文章:

java - 为什么在使用 DiskFileItem 时出现不确定性文件删除错误?

java - 异常处理无法访问的代码

java - 计算文本文件中的行数、单词数和字符数

java - log4j.xml 帮助

java - 如何使 CXF 日志记录功能与 SOAP 消息一起使用?

java - 将日志文件移动到 log4j 中的备份位置

java - 与通过Python执行Java程序相关

maven - Gradle 中的 Maven <parent> 是什么?

java - 无法加载来自其他 Maven 模块的应用程序上下文

java - Web应用程序[/payapplication]抛出load()异常java.lang.ClassNotFoundException : org. jvnet.hk2.external.runtime.ServiceLocatorRuntimeBean