如何在Maven项目中更改log4j.properties的位置?

时间:2014-09-24 20:43:54

标签: maven logging

我在这个项目上使用Eclipse和Maven。在将代码打包到JAR文件后,我需要保持log4j.properties文件可用于更改,因此我无法将该文件放在src/main/resources中,如this post中所述。

我发现this post说我可以为我的Java调用添加参数但是我真的想通过配置来做(如果可能的话)。

This reply首先提到的帖子是我能找到的最接近的解决方案。它显示了如何将属性文件与JAR包文件一起导出。

但是当我将属性文件放在名为CONF的文件夹中时,我无法使其工作。谁能说出我做错了什么?检查我的项目结构和我的pom.xml的一部分。

Project Structure http://oi62.tinypic.com/imuwxv.jpg

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <targetPath>${basedir}/target</targetPath>
            <includes>
                <include>conf/log4j.properties</include>
                <include>conf/configuracoes.properties</include>
                <include>conf/aws.properties</include>
            </includes>
        </resource>
    </resources>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>br.com.aplicacao.ProgramLauncher</mainClass>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>./conf</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

2 个答案:

答案 0 :(得分:1)

问题解决了。我的POM文件中缺少某些行,直接在project树中。

<properties>
    <log4j.configuration>conf/log4j.properties</log4j.configuration>
</properties>

答案 1 :(得分:0)

在我的情况下,使用./conf/的设置无法与log4j一起使用,但在我更改为private static String reverseString(String s) { char[] orig = s.toCharArray(); char[] reverse = new char[orig.length]; for (int i = 0; i < orig.length; i++) { reverse[i] = orig[orig.length - i - 1]; } return new String(reverse); } 之后就可以了。