简体   繁体   中英

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?

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>

log4j:WARN Please initialize the log4j system properly.

You don't need to care this message if you don't need to use log4j.

However, if you need log4j, please add the following <dependency> tag under <dependencies>

<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.16</version>
</dependency>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM