我有这个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>

09-30 14:05
查看更多