<

I just announced the new Spring 5 modules in REST With Spring:

>> CHECK OUT THE COURSE

1. Overview

This tutorial describes the resources plugin, one of the core plugins of the Maven build tool.

For an overview of the other core plugins, refer to this article.

2. Plugin Goals

The resources plugin copies files from input resource directories to an output directory. This plugin has three goals, which are different only in how the resources and output directories are specified.

The three goals of this plugin are:

  • resources – copy resources that are part of the main source code to the main output directory
  • testResources copy resources that are part of the test source code to the test output directory
  • copy-resources copy arbitrary resource files to an output directory, requiring us to specify the input files and the output directory

Let’s take a look at the resources plugin in the pom.xml:

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

We can find the latest version of this plugin here.

3. Example

Assume we want to copy resource files from the directory input-resources to the directory output-resources and we want to exclude all files ending with the extension .png.

These requirements are satisfied with this configuration:

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

The configuration applies to all executions of the resources plugin.

For example, when the resources goal of this plugin is executed with the command mvn resources:resources, all resources from the input-resources directory, except for PNG files, will be copied to output-resources.

Since, by default, the resources goal is bound to the process-resources phase in the Maven default lifecycle, we can execute this goal and all the preceding phases by running the command mvn process-resources.

In the given configuration, there’s a parameter named filtering with the value of true. The filtering parameter is used to replace placeholder variables in the resource files.

For instance, if we have a property in the POM:

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

and one of the resource files contains:

Welcome to ${resources.name}!

then the variable will be evaluated in the output resource, and the resulting file will contain:

Welcome to Baeldung!

4. Conclusion

In this quick article, we went over the resources plugin and gave instructions on using and customizing it.

The complete source code for this tutorial can be found over on GitHub.

Next »
Maven Compiler Plugin

I just announced the new Spring 5 modules in REST With Spring:

>> CHECK OUT THE LESSONS