【发布时间】: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 所以当我创建一个名为资源的文件夹时,我需要在任何地方提及文件夹路径吗?