0

我做了一个 maven 项目,并使用 slf4j 和 log4j。我也在使用 jibx 绑定。

src/main/java 是我的类文件夹 src/main/config 文件夹,用于 jibx 绑定和生成的类

两者都被声明为源文件夹

log4j.properties 在类路径中(如果它存在于 java 或 config 中则无关)

这是情况:log4j 有效。我可以从 Eclipse 或通过创建的 jar 文件(maven)启动程序并记录工作。但是当我开始“maven clean”并再次构建项目并开始时,我得到“log4j:WARN No appenders could be found for logger”发生在从eclipse或通过jar文件开始。log4j.propeties 不会被复制到目标/类,也不会在 jar 文件中。我将 Eclipse 中的 log4j.properties 从示例 java 文件夹移动到配置文件夹并返回。再次用maven编译。属性位于类文件夹和 jar 中。maven clean 之后我总是必须这样做!我不知道为什么清理后属性会丢失。它仍然在类路径的文件夹中。我什么都不改变。任何人都知道如何解决它?这真的很令人不安。感谢 jibx 不时清洁是必要的。我用谷歌搜索,只有当属性不在类路径中时才发现问题。但就我而言,它是。

如果我错过了任何需要的信息,请:)

编辑:啊,是的。不在资源文件夹中的属性是问题所在。固定的。

但是如果属性不在资源文件夹中,仍然会出现奇怪的行为。即使在 Eclipse log4j 中,在 maven clean 之后也会停止工作。并在移动属性并返回到开始文件夹后再次工作。

4

2 回答 2

2

像这样的属性文件必须位于 src/main/resources 中才能进行生产。如果您希望对单元测试进行不同的配置,而不是将其放入 src/test/resources.xml 中。

于 2012-06-20T13:39:22.600 回答
0

<build>您可以通过在 pom.xml 中配置标签来指定 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>        
于 2012-06-21T12:46:12.860 回答