「log4j.xml」をロードする Java コードで「mvn test」を実行しようとしています。ファイルが見つからないという例外が発生しています。いくつかの助けを得ることは素晴らしいことです。
私の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>
ファイル構造:
- pom.xml = */myproject/pom.xml
- log4j.xml = */myproject/src/main/resources/log4j.xml
- myclass.java = */myproject/src/main/java/MyClass.java
- junit テスト = */myproject/src/test/java/MyClassTests.java
コマンド「mvn test」を実行すると、log4j.xml のファイルが見つからないという例外が発生します。
java.io.FileNotFoundException: */myproject/log4j.xml (そのようなファイルまたはディレクトリはありません)
基本的に、コードは /src/main/resources フォルダーではなく、プロジェクトのルート フォルダーで log4j.xml を探します。コードを「DOMConfigurator.configure("/src/main/resources/log4j.xml");」に変更したくありません。これにより、デプロイされたアプリケーションで問題が発生します。よりエレガントなソリューションが必要です。