【发布时间】:2013-03-07 22:19:23
【问题描述】:
我遇到了一个测试问题,在 maven 中执行该测试时无法初始化 log4j,尽管有效的 log4j.properties 位于 src/test/resources 中,因此应该在测试的类路径中结束。但它没有,即 log4j 只打印
log4j:WARN No appenders could be found for logger (org.springframework.test.context.junit4.SpringJUnit4ClassRunner).
log4j:WARN Please initialize the log4j system properly.
为了调试问题,我使用the code here从测试本身打印了类路径
但我得到的不是一长串的 jars 和路径
/<projectpath>/target/surefire/surefirebooter6226797341642271676.jar
所以我的问题是:
maven 正在处理类路径?
为什么我的 log4j.properties 没有出现在类路径中?
我该如何调试?
注意:在 Eclipse 中,我可以很好地运行测试,并且一切都按预期工作。
另一个注意事项:maven 项目是一个多模块项目,我只从单个子模块执行单个测试,命令行如下:
mvn -U -Dtest=de.company.project.SomeTest clean test
【问题讨论】:
-
如果您尝试从多模块构建中运行单个模块,您需要使用 -pl 或者 -amd 而不是进入适当的文件夹。此外,查看完整的 pom.xml 以了解问题可能出在哪里会很有帮助。
-
虽然这些选项肯定很有帮助,但我看不出它们与手头的问题有什么关系!?主要区别似乎是 -pl 实际上将使用本地构建工件,而进入目录则使用存储库中的工件。
标签: maven log4j classpath surefire