我有这个pom.xml:
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
在“ src / main / resources /”内部,我有此文件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全新安装时,$ {user.home}会转换为
<param name="File" value="C:\\Users\\myUser/myApp/myLog.log"/>
因此,我该如何忽略这种情况$ {user.home}以保留与$$ {user.home}相同的目标目录,因为log4j需要知道运行我的应用程序的任何计算机的用户目录。
注意:我还想澄清一下,我有更多的资源文件必须过滤。
感谢您的帮助。
最佳答案
您需要在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>