Java 多个maven模块中的log4j.properties?

Java 多个maven模块中的log4j.properties?,java,maven,log4j,Java,Maven,Log4j,当我有一个由多个模块组成的maven应用程序,并且每个模块都包含一个log4j.properties文件时,会发生什么情况?它们是否会被某个模块合并或覆盖(如果是,是哪一个) 更新:根据您的建议,我现在已在我的poms中排除了其他类似的属性: <dependency> [...] <excludes><exclude>**/log4j.properties</exclude></excludes> </dependency>

当我有一个由多个模块组成的maven应用程序,并且每个模块都包含一个log4j.properties文件时,会发生什么情况?它们是否会被某个模块合并或覆盖(如果是,是哪一个)

更新:根据您的建议,我现在已在我的poms中排除了其他类似的属性:

<dependency>
[...]
<excludes><exclude>**/log4j.properties</exclude></excludes>
</dependency>

[...]
**/log4j.properties
注意:然而,“排除”标记不被Maven识别,“排除”只适用于依赖项,而不适用于资源

更新


刚刚发现,我可以将log4j.properties放在src/test/resources中,这样它们就不会包含在可执行模块中了

例如,如果您有两个项目,一个用于数据,另一个用于演示。两者都具有log4j属性。当您部署war文件时,其中也包含数据文件。只有演示文稿项目具有此效果。数据项目中的log4.properties将被忽略。它们永远不会被合并或被自己重写

它们永远不会合并。通常,log4j.properties文件会被覆盖,您无法准确地判断是哪一个文件

这取决于容器加载Jar文件的顺序

因此,建议在应用程序的核心模块中为其他子模块设置一个log4j.properties,每个log4j.properties具有多个appender


但它在单独测试/处理子模块时会产生问题,因为单独测试时会停止日志记录。在我们的例子中,pom的源代码管理版本总是用来排除资源(这将在构建jar时排除属性文件)。然而,在developer local中,开发人员习惯于在POM中注释该排除,并且可以独立工作。

要排除资源,应该使用Maven resources插件()。标记层次结构是build/resources/excludes/exclude,但是我怎样才能将它从某个依赖项中排除,而将它从另一个依赖项中保留下来呢?我不明白“in developer local”是什么意思。因此,测试和web应用程序本身有不同的log4j.properties?我说的是
pom.xml
,在创建jar文件时,源代码管理版本将始终排除log4j.properties文件。但是,假设一个开发人员想要在本地进行测试,他需要在
pom
中注释排除,以便将那些log4j.properties包含在他的Jar中进行本地测试。维护pom.xml对于我来说太复杂了,它在本地与版本控制不同,但我理解这种方法!从现在起,我将把其他log4j.properties放在src/test/resource中。这很简单,你不需要在你的源代码管理中签入你的本地
pom
,直到你做了一些其他的更改。嗨,Jay,有没有办法让每个log4j.properties都有自己的单独的log4j.properties文件。你能举个例子吗。