【问题标题】:log4j.properties in multiple maven modules?多个maven模块中的log4j.properties?
【发布时间】:2014-03-21 16:02:15
【问题描述】:

当我有一个由多个模块组成的 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 中,这样它们就不会包含在可执行模块中!。

【问题讨论】:

标签: java maven log4j


【解决方案1】:

例如,如果您有 2 个项目,一个用于数据,另一个用于演示。两者都有 log4j.properties。当您部署其中还包含数据文件的war文件时。只有演示项目有效果。并且数据项目中的 log4.properties 将被忽略。它们永远不会被合并或自行覆盖。

【讨论】:

  • 嗨 Jay,有什么办法可以让每个人都有自己单独的 log4j.properties 文件。你能举个例子吗?
【解决方案2】:

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

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

所以建议你的应用程序核心模块中的其他子模块有一个 log4j.properties 和多个 appender。

但它会在独立测试/使用子模块时产生问题,因为它会在单独测试时停止记录。在我们的例子中,pom 的源代码控制版本总是用于排除资源(这将在构建 jar 时排除属性文件)。但是在本地开发人员中,开发人员过去常常在 POM 中注释该排除项,并且可以独立工作。

【讨论】:

  • 我不明白您所说的“在本地开发人员中”是什么意思。所以有不同的 log4j.properties 用于测试和 web 应用程序本身?
  • 我说的是pom.xml,源代码控制版本在创建jar文件时总是会排除log4j.properties文件。但是假设开发人员想要在他的本地测试,他需要在pom 中注释排除项,以便将这些 log4j.properties 包含在他的 Jar 中以进行本地测试。
  • 维护一个与版本控制在本地不同的 pom.xml 对我来说太复杂了,但我理解这种方法!从现在开始,我将把其他 log4j.properties 放在 src/test/resource 中。
  • 很简单,你不需要在源代码管理中签入你本地的pom,直到你有一些其他的改变。
猜你喜欢
  • 2012-03-01
  • 1970-01-01
  • 2014-06-12
  • 2015-02-24
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 2012-04-27
  • 2017-05-18
相关资源
最近更新 更多