Copiar arquivos durante build Maven

Criamos esse post imaginando um cenário onde você está realizando o build de uma aplicação maven e deseja copiar arquivos extras para eu jar.

Iremos utilizar nesse nosso teste um projeto Spring Boot, mas se aplica a qualquer projeto Maven.

Cenário Imaginado

Temos um projeto maven com o código fonte em Java, a pasta resources e uma pasta com arquivos extras que precisam estar dentro do jar.

Porém esses arquivos extras não estão dentro da pasta resources nem dentro dos fontes, como por exemplo na imagem abaixo.

Projeto no IntelliJ

Adicionando o plugin Maven para cópia de arquivos

Abaixo você verá o plugin do maven utilizado para copiar arquivos de outros diretórios para dentro do jar.

<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes/arquivos_extras/</outputDirectory>
<resources>
<resource>
<directory>${basedir}/arquivos_extras/</directory>
<includes>
<include>*.*</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

No projeto atual estamos realizando os testes com arquivos que estão dentro do projeto, porém, os arquivos desejados podem estar em qualquer lugar da maquina em que se tá fazendo o build.

Após executar o comando abaixo, já podemos ver que os arquivos foram copiados para a pasta target em questão conforme descrito no plugin e também para o jar.

mvn compile install
Imagem plugin

Ao abrir o arquivo .jar gerado com o Winrar por exemplo, podemos visualizar o a pasta com os arquivos copiados para o jar.

Arquivos dentro do jar

O projeto em que foi adicionado o plugin está disponível no github para consulta.

https://github.com/aluizrech/spring-api-consumer

Deixe um comentário

O seu endereço de e-mail não será publicado.