[英]loading log4j.xml using maven test
我正在嘗試使用加載“ log4j.xml”的Java代碼運行“ MVN測試”。 我收到文件找不到異常。 希望能得到一些幫助。
我的Java代碼:
public class MyClass {
static Logger logger = Logger.getLogger(MyClass.class);
public boolean check(){
try{
DOMConfigurator.configure("log4j.xml");
logger.info("into the method");
}
return true;
}
}
Junit測試用例:
import static org.junit.Assert.*;
import org.junit.Test;
public class MyClassTests {
@Test
public void testCheck() {
MyClass myc = new MyClass();
assertEquals(true, myc.check());
}
}
pom.xml塊
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.15</version>
<configuration>
<includes>
<include>**/*Tests.java</include>
<include>log4j.xml</include>
</includes>
<argLine>-Xmx512m</argLine>
</configuration>
<inherited>true</inherited>
</plugin>
檔案結構:
當我運行命令“ mvn test”時,出現log4j.xml的文件未找到異常:
java.io.FileNotFoundException:* / myproject / log4j.xml(無此類文件或目錄)
基本上,代碼是在項目的根文件夾而不是/ src / main / resources文件夾中查找log4j.xml。 我不想將代碼更改為“ DOMConfigurator.configure(“ / src / main / resources / log4j.xml”);“ 這將在已部署的應用程序中引起問題。 需要更優雅的解決方案。
我看不到您的POM,但您應該在構建聲明中包含一個資源部分,以確保src / main / resources可作為類資源使用。
<build>
<outputDirectory>build/maven/${artifactId}/target/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
然后,DOMConfigurator應該能夠將log4j.xml定位為類資源。 如果在項目上運行maven軟件包,則應查看build或target文件夾,然后將log4j.xml復制到classes文件夾。 然后,您將知道它應該作為資源可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.