【问题标题】:How to set classpath in pom.xml?如何在 pom.xml 中设置类路径?
【发布时间】:2012-11-04 13:36:36
【问题描述】:

当使用maven 运行测试时,我希望在我的屏幕上看到输出。

log4j.xml 放入我的项目目录(src/test/resources/cfg/)后,我更新了我的pom 以包含

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>

以上行不通。测试运行时,我仍然看到以下消息

log4j:WARN Please initialize the log4j system properly.

为了记录,以下是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>

请问我错过了什么?

【问题讨论】:

标签: java maven log4j pom.xml


【解决方案1】:

我有几个 cmets。首先,我建议您将任何与测试相关的 log4j、logback 配置文件直接放在 src/test/resources 中。这样一来,它们总是被添加到类路径中,并且可以正常工作。

但是,如果您需要将文件放在 src/test/resources/cfg 并想使用 classpath 元素,那么请注意 documentation 的建议

但是,如果必须,您可以使用 additionalClasspathElements 元素将自定义资源/jar 添加到您的类路径。这将被视为绝对文件系统路径,因此您可能需要使用 ${basedir} 或其他结合相对路径的属性。

那就试试吧:

<additionalClasspathElement>${basedir}/src/test/resources/cfg/</additionalClasspathElement>

【讨论】:

    【解决方案2】:

    log4j:WARN Please initialize the log4j system properly.

    如果您不需要使用 log4j,则无需关心此消息。

    不过,如果你需要log4j,请在&lt;dependencies&gt;下添加如下&lt;dependency&gt;标签

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-26
      • 1970-01-01
      • 2020-01-13
      相关资源
      最近更新 更多