我做了一个maven项目,正在使用slf4j和log4j。我也在使用jibx绑定。
src / main / java是我的类文件夹 用于jibx绑定和生成的类的src / main / config文件夹
两者都被声明为源文件夹
log4j.properties位于类路径中(如果它在java或config中,则相关)
这是情图: log4j工作。我可以从eclipse或通过创建的jar文件(maven)和日志工作启动程序。 但是,当我开始“maven clean”并再次构建项目并开始我得到 “log4j:WARN没有为记录器找到appender” 从eclipse开始或通过jar文件发生。 log4j.propeties不会被复制到目标/类,也不会在jar文件中。 我将Eclipse中的log4j.properties从示例java文件夹移动到config文件夹并返回。再次与maven编译。属性位于classes文件夹和jar中。 我总是必须在maven清洁后这样做!我不知道干净后为什么属性丢失了。它仍然在classpath中的文件夹中。我什么都没改变。 任何人都知道如何解决它?这真令人不安。对于jibx而言,不时需要清洁。 我搜索了谷歌,只有当属性不在类路径中时才发现问题。但就我而言,它是。
如果我错过任何需要的信息请求,请:)
编辑: 唉,是的。不在资源文件夹中的属性是问题。固定的。
但是,如果属性不在资源文件夹中,则仍会出现奇怪的行为。即使在Eclipse中,log4j也会在maven清理后停止工作。移动属性并返回到开始文件夹后再次工作。
答案 0 :(得分:2)
这样的属性文件必须位于src / main / resources中以进行生产。如果您希望使用不同的单元测试配置,而不是将其放入src / test / resources中。
答案 1 :(得分:0)
您可以通过在pom.xml中配置<build>
标记来指定maven从src / test / main读取资源
我们甚至可以在src / main / java / test中放置测试用例,并通过配置<testSourceDirectory>
标记
我们可以通过配置<testResources>
代码
<build>
<testSourceDirectory>${basedir}/src/test/java/logical</testSourceDirectory>
<testResources>
<testResource>
<directory>${basedir}/src/main/resources/</directory>
<includes>
<include>*</include>
</includes>
</testResource>
</testResources>
</build>