CodeGym/Cursos Java/Módulo 3/Gerenciando arquivos durante a construção de um projeto M...

Gerenciando arquivos durante a construção de um projeto Maven

Disponível

2.1 plug-in de recursos de cópia maven-resources-plugin

Se você estiver construindo um aplicativo da Web, terá apenas vários recursos diferentes nele. Estas são bibliotecas jar, servlets jsp, arquivos de configurações. E, claro, este é um monte de arquivos estáticos como html, css, js, bem como várias imagens.

Por padrão, ao criar um projeto, o Maven simplesmente copia todos os seus arquivos da pasta src/main/resourcespara o diretório de destino. Se você deseja fazer alterações nesse comportamento, o plug-in o ajudará maven-resources-plugin.

Exemplo de código para tal plugin:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>validate</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>
                   ${basedir}/target/resources
                </outputDirectory>
                <resources>
                    <resource>  instructions for copying a resource 1 </resource>
                    <resource>  instructions for copying a resource 2 </resource>
                    <resource>  instructions for copying a resource N </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

Este plugin será chamado durante a fase de validação. Usando a tag, <outputDirectory>você pode definir o diretório onde o plug-in deve copiar os recursos especificados no arquivo <resources>. E é aqui que o plugin pode se desdobrar com toda a sua força.

2.2 Filtrando recursos com o plug-in maven-resources

Os recursos do plug-in podem ser especificados não apenas na forma de arquivos, mas imediatamente na forma de diretórios. Além disso, uma máscara pode ser adicionada ao diretório, que especifica quais arquivos dele serão incluídos neste recurso.

Exemplo:


            <resource>
                <directory>src/main/resources/images</directory>
                <includes>
                     <include>**/*.png</include>
                </includes>
            </resource>

Dois asteriscos como máscara representam qualquer número de diretórios . No exemplo acima, todos os arquivos png contidos no diretório src/main/resources/images(e seus subdiretórios) serão considerados como dados de recursos.

Se você deseja excluir alguns arquivos, pode usar a extensão exclude. Exemplo:

<resource>
    <directory>src/main/resources/images</directory>
    <includes>
        <include>**/*.png</include>
    </includes>
    <excludes>
         <exclude>old/*.png</exclude>
    </excludes>
</resource>

As tags são aplicadas sequencialmente: primeiro, os arquivos de inclusão especificados nos arquivos de inclusão serão adicionados ao recurso e, em seguida, os arquivos de exclusão serão excluídos desta lista.

Mas isso não é tudo. O plugin pode olhar dentro dos arquivos (se forem texto, é claro). E, por exemplo, adicione application.propertiesa versão necessária do assembly ao arquivo. Para que o plug-in processe o conteúdo do arquivo, você precisa especificar o parâmetro <filtering>true</filtering>.

Exemplo:

<resource>
    <directory>src/main/resources/properties</directory>
    <filtering>true</filtering>
    <includes>
        <include>**/*. properties </include>
    </includes>
</resource>

Mais detalhes sobre este plugin podem ser encontrados no link: https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

2.3 plug-in de inclusão de fonte maven-source-plugin

Outro plug-in útil - maven-source-pluginpermite incluir o código-fonte de seus arquivos java no assembly. Para que?

O fato é que, além dos aplicativos da web, um número muito grande de bibliotecas é montado usando o Maven. Muitos projetos Java seguem o conceito de código aberto e são distribuídos para a comunidade Java com seus próprios fontes.

Por que você precisa de um plugin separado? Por que você não pode simplesmente copiar a fonte e pronto?

Primeiro, em qualquer projeto complexo, as fontes podem ser armazenadas em vários locais.

Em segundo lugar, a geração de fontes com base em especificações xml é frequentemente usada; essas fontes também precisam ser incluídas na montagem.

E em terceiro lugar, você pode decidir não incluir nenhum arquivo especialmente secreto em sua montagem.

Um exemplo de uso do plugin maven-source-plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2.4 plug-in de cópia de dependência maven-dependency-plugin

Você também pode precisar copiar dependências (bibliotecas) de maneira inteligente ao criar um projeto. Um plug-in é usado para isso maven-dependency-plugin.

Exemplo:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <outputDirectory>
            ${project.build.directory}/lib/
        </outputDirectory>
    </configuration>
    <executions>
        <execution>
            <id>copy-dependencies</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Neste exemplo, o comportamento padrão do plug-in é escrito - copiando bibliotecas para o arquivo ${project.build.directory}/lib.

A seção de execução informa que o plug-in será chamado durante a fase de construção - pacote, meta - dependências de cópia.

Em geral, este plugin tem um conjunto bastante grande de objetivos, aqui estão os mais populares:

1 dependência:analisar análise de dependência (usado, não utilizado, especificado, não especificado)
2 dependency:analyze-duplicate identificando dependências duplicadas
3 dependência: resolver resolução (definição) de todas as dependências
4 dependência: resolve-plugin permissão (definição) de todos os plugins
5 dependência:árvore exibindo a árvore de dependências

Você também pode definir parâmetros adicionais na seção de configuração:

1 diretório de saída Diretório onde as dependências serão copiadas
2 overWriteReleases Sinalize para substituir dependências ao criar uma versão
3 overWriteSnapshots Sinalizador para sobrescrever dependências não terminais que possuem SNAPSHOT
4 overWriteIfNewer Sinalize para substituir bibliotecas por versões mais recentes

Exemplo:


<configuration>
    <outputDirectory>
         ${project.build.directory}/lib/
    </outputDirectory>
    <overWriteReleases>false</overWriteReleases>
    <overWriteSnapshots>false</overWriteSnapshots>
    <overWriteIfNewer>true</overWriteIfNewer>
 </configuration>

Por padrão <overWriteReleases>, e <overWriteSnapshots>é falso, pois <overWriteIfNewer>é verdadeiro.

Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário