Maven copy resources in multi module project

Luca Geretti picture Luca Geretti · Sep 25, 2011 · Viewed 14.5k times · Source

My need is pretty basic but I could not find any clean answer to it: I simply need to be able to distribute a resource in a multi-module project.

Let us consider for example the LICENSE file, which I hereby assume to be the same for all modules. I prefer not to manually copy it into each and every module because the file could change over time. I also prefer not to statically link to resources (even if using relative paths) outside the project folder, because the modular structure can possibly change too.

Is there any plugin that can be used to robustly guarantee that each module is given the required file? It would be equally acceptable for such copy to be obtained by exploiting the POM of the parent project or directly performed by the super project in the modular hierarchy.

Answer

definitely undefinable picture definitely undefinable · Sep 25, 2011

you could use the assembly and the dependency plugins.. did you stumble over that link? http://www.sonatype.com/people/2008/04/how-to-share-resources-across-projects-in-maven/

it describes that option ..its from 2008, but maven is around for quite some time.. so I guess its more or less up to date

edit regarding comment
Another option is the maven-remote-resources-plugin. For a more detailed example see:
http://maven.apache.org/plugins/maven-remote-resources-plugin/examples/sharing-resources.html

Since their intro speaks actually for itself, I quote (maven.apache.org)

This plugin is used to retrieve JARs of resources from remote repositories, process those resources, and incorporate them into JARs you build with Maven. A very common use-case is the need to package certain resources in a consistent way across your organization: at Apache it is required that every JAR produced contains a copy of the Apache license and a notice file that references all used software in a given project.