在写工程的时候很多资源文件会放到Maven的Resource文件夹下。像Log4j这种配置文件,打包的时候我们不能将其拷贝到jar包中。怎么办呢?使用Maven的JAR插件吧。
讲JAR插件之前先说说Resource标签。大家应该都知道这个标签使用来拷贝资源文件的。那个directory是用来配置资源文件的位置的。它是基于工程目录的,如果你不放心可以在前满加入${basedir}占位符。坑的是下面的exclude,这个时候我发现使用跟directory一样的绝对路径去排除log4j.xml没能成功。怀疑这个可能是基于directory的相对路径(没有验证过)。
资源文件赢还有个target标签,代表的是资源输出到那个目录下。注意,这个时候是相对于target文件夹了。
像下面这样,资源文件就配置好了。
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>resources</targetPath>
<!--<excludes>-->
<!--<exclude>log4j.xml</exclude>-->
<!--</excludes>-->
</resource>
</resources>
在这里我只讲怎么将文件移除。比如在${basedir}/src/main/resource下的log4j.xml文件。在插件里只需要将按如下配置即可。
我只强调我被坑的地方。那就是exclude标签。这个exclude是相对于target文件夹的。比如你刚刚配置resource的时候设置target是outResource的话,相应的,下面的exclude也应该改成outResource/log4j.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<excludes>
<exclude>log4j.xml</exclude>
</excludes>
</configuration>
</plugin>
这两个路径都是相对于target来说的,在Maven的官方文档中么有发现相关的说明(或许是我没注意)。所以在这里有必要写明一下,欢迎交流指正。