【问题标题】:Where does maven search for log4j.properties file?maven 在哪里搜索 log4j.properties 文件?
【发布时间】:2014-09-11 23:30:23
【问题描述】:

我在 Maven 中使用 log4j 时遇到问题。我有一个属性文件,即log4j.properties,我将该文件放在存储项目pom.xml 的同一路径中。

pom.xml

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
        <scope>test</scope>
</dependency>

我在 test 文件夹下的代码中使用了 log4j。

代码

package com.example.automationtest;

import org.apache.log4j.*;
import org.junit.Test;

public class AppTest
{
    @Test
    public void testLogger(){
   //PropertyConfigurator.configure("C:\\Users\\Desktop\\AutomationTest\\log4j.properties");
    Logger log = Logger.getLogger("exampleLogger");
    log.debug("Hello, World!");
   }
}

我想知道,maven如何识别log4j.properties文件的位置?

在上述情况下,如果我运行命令mvn test 它会给出警告,请查看下面的屏幕截图以获取警告消息。

所以作为一种解决方法,我在我的代码中提供了 log4j.properties 的完整路径。我用过以下行:

PropertyConfigurator.configure("C:\\Users\\Desktop\\AutomationTest\\log4j.properties")

是否需要使用上面这行代码,还是maven查找log4j.properties文件的具体目录?

【问题讨论】:

  • 它与 maven 无关,而与 log4j 的工作方式无关。 IMO,log4j 期望在类路径中找到可用的“属性”文件。
  • 所以基本上我需要通过提供 log4j.properties 文件的位置来设置类路径?
  • 对于测试,src/test/resources 目录是log4j.properties 文件的适当位置。当 Maven 开始测试时,这个目录将成为类路径的一部分。
  • 我想 Maven 本身对 log4j 是不可知的。但是,您应该注意 log4j.properties 出现在类路径的根目录中,因此 /src/main/resources/ 将是正确的位置(然后应该出现在 target/classes/ 文件夹中)
  • @Seelenvirtuose 所以当我创建一个名为资源的文件夹时,我需要在任何地方提及文件夹路径吗?

标签: java maven log4j


【解决方案1】:

该文件需要进入src/main/resources/src/test/resources/(如果您只需要它用于单元测试)。

更长的解释:Maven 将 Java 类路径拆分为源代码和资源(非 Java 的东西,如属性文件、图像等)。这样做的主要原因是 Maven 可以为您过滤资源,为了更加安全,他们将资源放在与源不同的文件夹中。

【讨论】:

    【解决方案2】:

    有很多与流行的解决方案 src/main/resourcessrc/test/resources 有关的答案,但通常在您的应用程序中没有 log4j.properties 可能很有用。 与其在代码中提供硬编码的log4j.properties,不如将​​其留给客户端(应用服务器、舞台环境等)来配置所需的日志记录。 因此,我建议对您的部署细节保持谨慎,以决定将 log4j.properties 包含或排除在您的 maven 程序集中。

    参考:If using maven, usually you put log4j.properties under java or resources?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 2013-03-09
      • 2010-12-01
      • 2019-04-30
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      相关资源
      最近更新 更多