我有这个pom.xml:
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
Inside&#34; src / main / resources /&#34;,我有这个文件log4j.xml。
...
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="File" value="${user.home}/myApp/myLog.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="INFO"/>
<param name="DatePattern" value="_yyyy-MM'.log'"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c:%L] %m%n"/>
</layout>
</appender>
...
我的问题是当我进行$ mvn clean install时,$ {user.home}被翻译为
<param name="File" value="C:\\Users\\myUser/myApp/myLog.log"/>
那么我怎么能忽略这种情况$ {user.home}使用相同的$ {user.home}保留在目标目录中,因为log4j需要知道运行我的app的任何机器的用户目录。
注意:我还想澄清一下,我有更多必须过滤的资源文件。
提前感谢您的帮助。
答案 0 :(得分:2)
您需要在pom.xml中添加<excludes>
标记,以便在过滤为true时不复制此文件,并添加第二个资源块以仅复制此文件而不进行过滤
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>log4j.xml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>log4j.xml</exclude>
</includes>
</resource>
</resources>
</build>
</project>
答案 1 :(得分:1)
我找到了这个解决方案,在maven-resources-plugin上使用escapeString,这里是代码片段:
<project>
...
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<escapeString>\</escapeString>
</configuration>
</plugin>
</plugins>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
并且在log4j配置文件中,需要在属性之前添加“\”。
<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<errorHandler class="org.apache.log4j.helpers.OnlyOnceErrorHandler"/>
<param name="File" value="\${user.home}/myApp/myLog.log"/>
<param name="Append" value="true"/>
<param name="Threshold" value="INFO"/>
<param name="DatePattern" value="_yyyy-MM'.log'"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c:%L] %m%n"/>
</layout>
</appender>
请参阅文档:Escape Filtering
我希望有人觉得它很有用。