Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set classpath in pom.xml?

When running tests using maven, i'd like to see output on my screen.

After putting the log4j.xml into my project's dir (src/test/resources/cfg/), i updated my pom to include

235             <plugin>
236                 <groupId>org.apache.maven.plugins</groupId>
237                 <artifactId>maven-surefire-plugin</artifactId>
238                 <configuration>
239                     <skipTests>false</skipTests>
240                     <excludes>
241                         <exclude>**/*$*.java</exclude>
242                     </excludes>
243                         <systemProperties>
244                            <property>
245                               <name>-Dlog4j.configuration</name>
246                               <value>file:src/test/resources/cfg/log4j.xml</value>
247                            </property>
248                         </systemProperties>
249                     <additionalClasspathElements>
250                         <additionalClasspathElement>src/test/resources/cfg/</additionalClasspathElement>
251                     </additionalClasspathElements>
252                 </configuration>
253             </plugin>

The above does not work. When tests run, i still see the following message

log4j:WARN Please initialize the log4j system properly.

For the record, the following is the log4j

  1 <?xml version="1.0" encoding="UTF-8" ?>
  2 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3 
  4 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  5   <appender name="console" class="org.apache.log4j.ConsoleAppender">
  6     <param name="Target" value="System.out"/>
  7     <layout class="org.apache.log4j.PatternLayout">
  8       <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
  9     </layout>
 10   </appender>
 11 
 12   <root>
 13     <priority value ="debug" />
 14     <appender-ref ref="console" />
 15   </root>
 16 
 17 </log4j:configuration>

What am i missing please?

like image 880
James Raitsev Avatar asked Nov 15 '12 21:11

James Raitsev


1 Answers

I have a couple of comments. First, I recommend that you put any test-related log4j, logback config files directly in src/test/resources. That way they are always added to the classpath and it just works.

However, if you need to put the files in src/test/resources/cfg and want to use the classpathelements, then heed the advice of the documentation

But, if you must, you can use the additionalClasspathElements element to add custom resources/jars to your classpath. This will be treated as an absolute file system path, so you may want use ${basedir} or another property combined with a relative path.

So try:

<additionalClasspathElement>${basedir}/src/test/resources/cfg/</additionalClasspathElement>
like image 90
Guido Simone Avatar answered Sep 23 '22 04:09

Guido Simone