1. 概述

本教程将深入探讨 Maven 构建工具的核心插件之一:resources 插件。关于其他核心插件的概述,可参考这篇文章

2. 插件目标

resources 插件的核心功能是将资源文件从输入目录复制到输出目录。该插件包含三个目标,主要区别在于资源和输出目录的指定方式:

resources

  • 复制主源码关联的资源到主输出目录

testResources

  • 复制测试源码关联的资源到测试输出目录

copy-resources

  • 任意资源文件复制到指定目录,需手动配置输入/输出路径

插件基础配置示例:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        ...
    </configuration>
</plugin>

最新版本可查阅Maven 中央仓库

3. 实战示例

假设需求:将 input-resources 目录下的资源复制到 output-resources,并排除所有 .png 文件。配置如下:

<configuration>
    <outputDirectory>output-resources</outputDirectory>
    <resources>
        <resource>
            <directory>input-resources</directory>
            <excludes>
                <exclude>*.png</exclude>
            </excludes>
            <filtering>true</filtering>
        </resource>
    </resources>
</configuration>

执行命令 mvn resources:resources 时:

  • 所有非 .png 文件从 input-resources 复制到 output-resources
  • 该目标默认绑定到 Maven 生命周期的 process-resources 阶段,可通过 mvn process-resources 触发

⚠️ 关键参数解析
filtering=true 启用变量替换功能。例如:

POM 中定义属性:

<properties>
    <resources.name>Baeldung</resources.name>
</properties>

资源文件包含占位符:

Welcome to ${resources.name}!

输出结果自动解析为:

Welcome to Baeldung!

4. 总结

本文系统讲解了 resources 插件的三大目标及实战配置技巧。通过合理运用 filtering 和资源过滤功能,可高效管理项目资源文件。

完整示例代码请查阅GitHub 仓库


原始标题:Maven Resources Plugin | Baeldung