50% de desconto todos os planos, por tempo limitado. Começando em $2.48/mo
Faltam 18 minutos
Aplicativos Web e empresariais

Dominando o Maven: comandos detalhados, opções e cheatsheet para desenvolvimento eficiente

Ada Lovegood By Ada Lovegood 18 minutos de leitura Atualizado em 23 de fevereiro de 2025
guia de comandos mvn

As ferramentas de automação e desenvolvimento estão definitivamente entre os aspectos mais importantes de um projeto e, neste blog, queremos discutir o Maven. Maven é uma poderosa ferramenta de automação para projetos Java. Simplifica o processo de construção e cria uma estrutura uniforme para projetos. Assim, fica mais fácil gerenciar e entender os projetos. Este blog cobre quase tudo no mundo do Maven, abrangendo uma ampla gama de comandos e opções que irão agilizar seu fluxo de trabalho de desenvolvimento. Exploraremos vários aspectos, como gerenciamento de servidores e contêineres, gerenciamento de controle de origem (SCM) e GPG para assinatura de artefatos. Além disso, examinaremos comandos especializados para gerenciamento, montagem e distribuição de plug-ins e geração de sites e relatórios de projetos. Portanto, ao final deste guia, você terá uma compreensão completa do Comandos e opções do Maven.

Visão geral do Maven; Ciclo de vida do projeto

Na língua iídiche, a palavra Maven significa “acumulador de conhecimento”. Esse significado explica muito bem o poder do Maven como ferramenta de automação para projetos Java. O Maven torna o processo de construção e o gerenciamento de projetos muito simples. E faz isso automatizando várias tarefas e fornecendo um sistema de construção uniforme.

Agora, para ter uma ideia clara de como o Maven funciona, vamos analisar o conceito de um Modelo de Objeto do Projeto (POM). POM é um arquivo XML que contém informações sobre o projeto e detalhes de configuração. Maven usa POM como base de seu trabalho. Portanto, o Maven pega as dependências do projeto, o diretório de construção, o diretório de origem, o diretório de origem de teste e os objetivos desta fonte para operar.

Após definir o projeto e suas dependências do pom.xml, sempre que você executa um comando Maven, ele lê o arquivo pom para executar a fase de construção específica desse comando. Há um longo ciclo de vida do projeto, desde o momento em que você cria o projeto até a sua implantação. Este ciclo de vida define a sequência de fases pelas quais seu projeto deve passar. Cada fase representa um estágio no ciclo de vida e executa tarefas específicas, como compilar código-fonte, executar testes e empacotar o código em um formato distribuível. Tudo isso torna o ciclo de vida do projeto Maven um conceito importante de ser entendido. Então, vamos dar uma olhada mais de perto nas fases do ciclo de vida do Maven:

  1. Validar: Esta fase valida se o projeto está correto e todas as informações necessárias estão disponíveis.
  2. Compilar: Nesta fase é compilado o código fonte do projeto.
  3. Teste: Esta fase testa o código-fonte compilado usando uma estrutura de teste de unidade adequada.
  4. Pacote: Esta fase empacota o código compilado em seu formato distribuível (por exemplo, JAR, WAR).
  5. Instalar: Na fase de instalação, o pacote é instalado no repositório local e fica disponível para outros projetos na mesma máquina.
  6. Implantar: Esta fase copia o pacote final para o repositório remoto para compartilhamento com outros desenvolvedores e projetos.

Cada uma dessas fases tem um comando mvn correspondente que abordaremos nas próximas seções de nossa folha de dicas do maven. Estes serão os comandos mais importantes a serem usados ​​para gerenciar o processo de construção do seu projeto.

Gerenciamento de Dependências

Um dos principais recursos do Maven é o gerenciamento de dependências. Esse recurso é muito significativo no desempenho do Maven porque facilita o tratamento das dependências do projeto.

Como o Maven gerencia dependências

Maven usa um repositório centralizado, conhecido como Repositório Central Maven, onde uma vasta gama de bibliotecas e plugins estão hospedados. Quando um projeto requer uma dependência, o Maven baixa automaticamente as bibliotecas necessárias do repositório central e as armazena no repositório local. Este repositório local é um cache em sua máquina local que reduz o tempo de download para compilações futuras.

As dependências no Maven são especificadas no arquivo pom.xml arquivo sob o <dependências> seção. Cada dependência é definida por um conjunto de coordenadas: ID do grupo, artefatoId, e versão.

Escopos de Dependência

Ao trabalhar com Maven, você pode especificar o escopo das dependências. Este fator define a visibilidade do caminho de classe e a fase do ciclo de vida da dependência. Assim, você pode saber qual fase requer essa dependência. Os escopos comuns são:

  • Compilar: Este é o escopo padrão e é usado quando nenhum escopo é especificado. Dependências com este escopo estão disponíveis em todas as fases de construção e estão incluídas no pacote final.
  • Oferecido: Esperamos que as dependências com este escopo estejam prontas pelo ambiente de execução. Eles são usados ​​durante a compilação, mas não estão incluídos no pacote final.
  • Tempo de execução: Essas dependências não são necessárias para compilação, mas são necessárias durante a execução. Eles estão incluídos no caminho de classe do tempo de execução.
  • Teste: Essas dependências são necessárias apenas para compilar e executar testes. Eles não estão incluídos no tempo de execução ou no pacote final.
  • Sistema: O escopo do sistema é semelhante ao escopo fornecido, mas você deve fornecer o JAR que o Maven usará. O JAR deve estar presente no caminho do sistema.

Dependências Transitivas

Um dos recursos poderosos do Maven é que ele pode lidar com dependências transitivas. Quando um projeto declara uma dependência, o Maven inclui automaticamente não apenas essa dependência, mas também suas dependências, as dependências de suas dependências e assim por diante. Essa cadeia de dependências é conhecida como dependências transitivas. Para deixar as coisas claras, imagine que seu projeto depende do spring-boot-starter-web, agora o Maven também incluirá todas as bibliotecas das quais o spring-boot-starter-web depende, como Spring Core, Spring MVC e Jackson.

Agora que você conhece a teoria de como o Maven gerencia dependências, vamos ver como trabalhar com isso na prática:

mvn dependency:resolve

Este comando pode resolver e exibir todas as dependências necessárias para o seu projeto. Você pode usá-lo para ver de quais bibliotecas seu projeto depende e ter certeza de que tudo está em ordem.

mvn dependency:tree

Com este comando, você pode ter uma estrutura em árvore das dependências do seu projeto. Mostra como cada dependência está relacionada e ajuda a identificar possíveis conflitos.

mvn dependency:analyze

Este comando analisa as dependências do seu projeto para encontrar quaisquer artefatos não utilizados. Ajuda você a limpar seu projeto e evitar inchaço desnecessário.

Os recursos de gerenciamento de dependências do Maven facilitam o processo de desenvolvimento. Eles também ajudam a evitar armadilhas comuns e a manter uma estrutura de projeto limpa e organizada.

Execução

A execução no Maven envolve a execução de tarefas ou objetivos específicos dentro do projeto. Essas tarefas podem variar desde a execução de programas Java até a execução de scripts ou comandos externos. O Maven fornece plug-ins poderosos para facilitar essas execuções. Este é outro recurso do Maven que o torna uma ótima ferramenta para automatizar diferentes partes do fluxo de trabalho do seu projeto. Então, vamos revisar os principais comandos de execução do maven:

mvn exec:java

Este comando é usado para executar uma classe Java em seu projeto. É útil para executar classes principais ou testar programas Java independentes sem empacotá-los primeiro.

mvn exec:exec

Este comando permite executar qualquer programa ou script externo de dentro do ambiente Maven. Você pode usá-lo para executar scripts de shell, ferramentas externas ou outros programas que fazem parte do seu processo de construção.

Os comandos de execução no Maven ajudam a automatizar tarefas repetitivas. Você também pode usá-los para integrar ferramentas e scripts externos ao ciclo de vida de construção do Maven. Portanto, no geral, eles podem ajudá-lo a gerenciar suas tarefas com muito mais eficiência.

Gerenciamento de servidores e contêineres

O gerenciamento de servidores e contêineres é uma etapa importante no desenvolvimento e implantação de aplicações web. O Maven facilita esse processo com plug-ins poderosos que permitem executar, implantar e gerenciar aplicativos da web em vários servidores e contêineres diretamente do seu processo de construção. Aqui estão alguns comandos Maven essenciais para gerenciar servidores e contêineres:

mvn tomcat7:run

Este comando executa seu aplicativo da web usando ApacheTomcat. É útil para desenvolvimento e testes locais e permite implantar e testar rapidamente seu aplicativo da web sem configurar um ambiente de servidor completo.

mvn jetty:run

Este comando executa seu aplicativo web usando um servidor web popular chamado Molhe. Assim como o Tomcat, o Jetty é ótimo para desenvolvimento e teste devido aos seus recursos de implantação leves e rápidos.

Como funciona o gerenciamento de servidores e contêineres

Maven usa plug-ins como Tomcat7-maven-plugin e plugin jetty-maven para gerenciar as operações do servidor. Esses plug-ins permitem iniciar, parar e configurar servidores como parte do ciclo de vida da construção. Assim, desenvolver e testar aplicações web em um ambiente consistente torna-se muito mais fácil. Usar perfis Maven para definir configurações de servidor para diferentes ambientes ajuda a gerenciar diferentes configurações de desenvolvimento, teste e produção. Este recurso do Maven também permite configurar o registro e o monitoramento nos plug-ins do servidor. Assim, você pode acompanhar as atividades do servidor e solucionar problemas rapidamente.

SCM (gerenciamento de controle de origem)

Um aspecto importante de qualquer projeto de desenvolvimento é o Gerenciamento de Controle de Origem (SCM). As equipes de desenvolvimento precisam do SCM para gerenciar as alterações no código-fonte ao longo do tempo. Maven possui um conjunto de comandos para interagir com sistemas SCM como Git, Subversion e outros. Esses comandos podem automatizar várias tarefas, como check-in de código, check-out de código e atualização de versões de projetos. Aqui estão alguns dos principais comandos do Maven SCM e suas opções:

mvn scm:checkin

Você pode usar este comando mvn para fazer check-in das alterações do projeto no SCM. Este comando ajuda a automatizar o processo de confirmação de alterações no repositório de controle de origem. Assim, as atualizações mais recentes são definitivamente salvas e compartilhadas com a equipe.

mvn scm:checkout

Este comando maven é usado para verificar o código do projeto no repositório SCM e é útil para obter uma cópia local do projeto. Assim, você sempre tem certeza de que está trabalhando com a versão mais recente do código-fonte.

mvn scm:update

Este comando mvn atualiza a cópia de trabalho local do projeto com as alterações mais recentes do repositório SCM. A função deste comando é garantir que sua base de código local esteja sincronizada com o repositório e inclua quaisquer novas alterações feitas por outros membros da equipe.

mvn scm:status

Este comando mvn exibe o status da cópia de trabalho local em relação ao repositório SCM. Em outras palavras, ele informa sobre todas as alterações que foram feitas localmente, mas ainda não foram confirmadas no repositório.

mvn scm:tag

Este comando é usado para criar uma tag no repositório SCM. As tags marcam pontos específicos na história do projeto, como lançamentos ou marcos significativos.

Os comandos do Maven SCM podem agilizar bastante o processo de gerenciamento do código-fonte do seu projeto. Compreender e utilizar esses comandos aumentará sua eficiência e colaboração dentro de sua equipe de desenvolvimento.

GPG (GNU Privacy Guard)

GNU Privacy Guard (GPG) é um software criptográfico que permite aos usuários criptografar e assinar dados e comunicações. No contexto do Maven, o GPG é usado para assinar artefatos para garantir sua autenticidade e integridade. Isso é importante ao implantar artefatos em repositórios públicos porque permite que os usuários verifiquem se os artefatos não foram adulterados. O Maven fornece diversos comandos para trabalhar com GPG e facilita o processo de assinatura e implantação dos artefatos do seu projeto. Vejamos alguns desses comandos como exemplos:

mvn gpg:sign

Você pode usar este comando maven para assinar os artefatos do projeto com GPG. A assinatura de artefatos garante que eles possam ser verificados por outras pessoas e fornece uma camada de segurança e confiança. Este comando é frequentemente usado durante o processo de construção para assinar JARs, WARs e outros tipos de artefatos antes da implementação.

mvn gpg:sign-and-deploy-file

Este comando mvn combina a assinatura e a implantação de um arquivo em uma única etapa. Você pode usá-lo quando quiser assinar um artefato e implantá-lo imediatamente em um repositório. Isso agiliza seu processo e garante que você deseja assinar um artefato e implantá-lo imediatamente em um repositório.

Incorporar a assinatura GPG em seu processo de construção Maven pode aumentar a segurança e a confiabilidade do seu software. Assim, fica mais fácil para os usuários confiar e verificar seus artefatos.

Gerenciamento de Liberação

O gerenciamento de liberação é muito importante no desenvolvimento de software. Com um gerenciamento de lançamento eficaz, você pode garantir que as versões do software sejam gerenciadas, empacotadas e implantadas adequadamente. Maven fornece um conjunto de comandos para automatizar e agilizar o processo de lançamento. Vejamos alguns exemplos de opções e comandos maven para gerenciamento de versão:

mvn release:prepare

Este comando mvn é usado para preparar um projeto para um lançamento. Ele executa tarefas como verificar se não há alterações não confirmadas, atualizar os números de versão no pom.xml arquivos, marcando o lançamento no sistema de gerenciamento de controle de origem (SCM) e atualizando o pom.xml arquivos para a próxima versão de desenvolvimento. Garante que o projeto esteja em um estado estável e pronto para lançamento.

mvn release:perform

Este comando executa o processo de lançamento real. Ele faz check-out do projeto no SCM na tag criada pelo lançamento: preparar comando, cria o projeto e implementa os artefatos no repositório especificado. Este comando garante que os artefatos sejam construídos a partir do estado exato do código no momento da preparação do lançamento.

mvn release:clean

Este comando mvn remove todos os arquivos de backup do descritor de versão criados durante o lançamento: preparar processo. Ele limpa o ambiente e garante que não haja arquivos restantes de tentativas de lançamento anteriores. Este comando fornece um espaço de trabalho limpo e evita possíveis problemas nas próximas versões.

O uso de comandos de gerenciamento de lançamento simplifica os processos de lançamento, melhora a qualidade do software e garante que os lançamentos sejam gerenciados de maneira eficaz.

Arquétipo

Se você é um desenvolvedor que deseja criar estruturas de projeto baseadas em modelos predefinidos, considere usar o plugin Maven Archetype. Aqui, discutiremos os principais comandos do Maven associados aos arquétipos.

mvn archetype:generate

Você pode usar este comando mvn para criar um novo projeto a partir de um modelo existente ou “arquétipo”. Este comando orienta o usuário na seleção de um arquétipo e na configuração do novo projeto. Então, ajuda você a montar um projeto bem estruturado.

mvn archetype:catalog

Este comando lista os arquétipos disponíveis que podem ser usados ​​para gerar novos projetos. É útil para explorar os vários modelos fornecidos pela comunidade Maven e determinar qual arquétipo melhor atende às necessidades do seu projeto.

Usando esses dois comandos maven, você pode iniciar rapidamente um novo projeto. Esteja você iniciando um aplicativo Java simples ou um projeto empresarial complexo, os arquétipos Maven fornecem um ponto de partida valioso.

Gerenciamento de plug-ins

Os plug-ins do Maven permitem que os desenvolvedores estendam a funcionalidade do Maven e automatizem várias tarefas dentro do ciclo de vida da construção. O gerenciamento eficaz de plug-ins garante que seu projeto permaneça passível de manutenção e que as compilações sejam reproduzíveis. Esta seção cobrirá comandos essenciais de gerenciamento de plugins Maven.

mvn plugin:download

Este comando é usado para baixar um plugin Maven específico do repositório. Você pode usá-lo quando quiser ter certeza de que um plugin específico está disponível em seu repositório local antes de executar outros comandos do Maven que dependem dele.

mvn plugin:help

Este comando maven exibe informações detalhadas e documentação sobre um plugin Maven específico. Você pode usá-lo quando precisar entender os vários objetivos, parâmetros e configurações disponíveis para um plugin.

Esses comandos de gerenciamento de plug-ins Maven aprimoram o processo de construção, automatizam fluxos de trabalho e mantêm altos padrões de qualidade e consistência do projeto.

Montagem e Distribuição

A funcionalidade de montagem e distribuição do Maven permite aos desenvolvedores empacotar seus projetos em diferentes formatos para distribuição. Você pode usá-los para criar JARs executáveis, aplicativos agrupados ou distribuições personalizadas que incluem dependências e outros recursos. Aqui, abordaremos os principais comandos do Maven para montagem e distribuição.

mvn assembly:assembly

Este comando cria uma montagem para o projeto. Um assembly é um pacote distribuível que pode incluir binários, código-fonte, dependências e outros recursos. Este comando usa o Assembly Plugin para gerar esses pacotes com base no descritor de assembly fornecido.

mvn assembly:directory

Este comando mvn cria a estrutura de diretórios do assembly sem realmente criar o arquivo compactado. Este comando é útil para testar e verificar o conteúdo e a estrutura da montagem antes de empacotá-la.

Aprender a usar os comandos de montagem e distribuição do Maven pode ajudar muito no empacotamento e distribuição de suas aplicações.

Comandos de geração de site

Os comandos de site do Maven são uma ótima maneira de documentar projetos. Esses comandos criam sites de documentação abrangentes para seus projetos. Aqui, abordaremos os comandos essenciais do site e suas funções:

mvn site

O comando mvn site gera a documentação do site do projeto e inclui informações sobre o projeto, como resumo do projeto, relatórios de dependências, uso de plugins e muito mais.

mvn site:deploy

Você pode usar este comando para implantar o site gerado em um servidor remoto. Isto é útil para disponibilizar a documentação para um público mais amplo, como membros da equipe ou o público.

mvn site:stage

Este comando organiza o site em um diretório local. Você pode usar este comando para visualizar o site localmente antes de implantá-lo no servidor remoto.

Documentação limpa e organizada é muito importante no desenvolvimento de um projeto. O comando maven site permite que você tenha tudo em ordem e melhor comunicação entre as equipes de desenvolvimento.

Comandos WAR e JAR

Como desenvolvedor, você definitivamente sabe que ser capaz de empacotar seus aplicativos em diferentes formatos é muito importante no processo de desenvolvimento. O Maven permite empacotar aplicativos Java em vários formatos, incluindo arquivos WAR (Web Application Archive) e JAR (Java Archive). A importância desses formatos de empacotamento fica clara quando você deseja implantar aplicativos em servidores e distribuir bibliotecas. Aqui, abordamos os principais comandos mvn para gerar arquivos WAR e JAR:

mvn war:war

Este comando compila seu projeto e o empacota em um arquivo WAR. Ao executar este comando, o Maven irá gerar um arquivo WAR no diretório de destino do seu projeto.

mvn jar:jar

Este comando compila seu projeto e o empacota em um arquivo JAR no diretório de destino do seu projeto.

Esses dois comandos ajudam você na implantação e distribuição. Assim, você pode usá-los para gerenciar e distribuir com eficiência seus aplicativos Java.

Relatórios

Qualquer projeto de software precisa de relatórios detalhados para acompanhar o progresso. E o Maven possui plug-ins e comandos mvn poderosos para gerar vários tipos de relatórios. Esta seção cobre dois plug-ins Maven que você pode usar para relatórios: Surefire e JaCoCo.

Plug-in Surefire

Você pode usar este plugin para executar testes de unidade em um projeto Maven. Ele gera relatórios detalhados sobre os testes que foram executados para que você tenha certeza de que o código se comporta da maneira esperada.

mvn surefire-report:report

Este comando gera um relatório de teste de unidade em um formato fácil de ler e analisar. Com este comando o Maven cria um relatório HTML no alvo/site diretório do seu projeto. Este relatório inclui informações sobre o número de testes executados, aprovados e reprovados, juntamente com rastreamentos de pilha detalhados para quaisquer falhas.

Plug-in JaCoCo

Você pode usar este plugin para medir e relatar a cobertura de código por meio de testes unitários. Assim, você pode ter certeza de que seus testes estão cobrindo a base de código.

mvn jacoco:report

Se você quiser ver quais partes do código foram testadas e quais não foram, este comando fornece um relatório de cobertura de código. O relatório que este comando cria é um relatório HTML no formato alvo/site/jacoco diretório que mostra métricas de cobertura detalhadas para classes, métodos e linhas de código.

Esses dois plug-ins ajudam a rastrear resultados de testes e cobertura de código e fornecem insights úteis sobre a integridade e a qualidade de sua base de código.

Personalização de construção

O Maven permite adaptar a construção para atender aos requisitos específicos do seu projeto. Nesta seção, abordaremos como usar perfis Maven e definições de propriedades para customização de build.

Perfis Maven

Com os perfis Maven você pode definir diferentes configurações para o seu projeto, que podem ser ativadas com base em diferentes fatores, como propriedades do sistema, variáveis ​​de ambiente ou condições personalizadas. Isso significa que você pode personalizar o processo de construção para diferentes ambientes, como desenvolvimento, teste e produção. Você pode definir perfis em seu pom.xml arquivo sob o <perfis> seção. E o -p opção seguida pelo ID do perfil ativará o perfil para você.

Definições de propriedade

As propriedades do Maven permitem definir valores que podem ser reutilizados em todo o seu pom.xml arquivo. Essas propriedades podem ser especificadas no pom.xml, por meio da linha de comando ou em arquivos de propriedades externos. Você pode definir propriedades no <propriedades> seção do seu pom.xml. Depois de defini-las você pode usar essas propriedades em todo o pom.xml arquivo.

Personalizar o processo de construção no Maven pode ajudá-lo a adaptar seu projeto a diferentes ambientes e requisitos. Ao usar perfis você pode alternar entre diferentes configurações de construção e ao usar propriedades você pode reutilizar e gerenciar valores com eficiência.

Conclusão

Este blog forneceu uma introdução abrangente ao Maven enquanto orientava você em cada etapa do processo de desenvolvimento de um aplicativo Java. Por ser uma poderosa ferramenta de automação para projetos Java, o maven possui comandos e capacidades diferentes para cada fase do desenvolvimento, e saber trabalhar com esses comandos e estar por dentro deles muda para melhor a qualidade do seu processo de desenvolvimento.

Perguntas frequentes

Para que é usado o Maven?

Maven é uma ferramenta de automação de construção e gerenciamento de projetos para projetos Java. Ele simplifica o processo de construção, gerencia as dependências do projeto e fornece uma estrutura de projeto padronizada. Maven também oferece suporte à documentação, relatórios e distribuição do projeto.

O que é POM no Maven?

Maven é uma ferramenta que automatiza o processo de construção e gerenciamento de dependências para projetos Java. POM (Project Object Model) é um arquivo XML no Maven que contém informações sobre o projeto e detalhes de configuração usados ​​pelo Maven para construir o projeto. O arquivo POM define dependências do projeto, plug-ins, objetivos e outras configurações de construção.

Compartilhar

Mais do blog

Continue lendo.

Imagem de recurso de revisão do Odoo com texto de título grande à esquerda e o logotipo do Odoo à direita, cercado por painéis flutuantes da interface do aplicativo em um fundo roxo suave com tema de nuvem.
Aplicativos Web e empresariais

Uma análise abrangente do Odoo: Odoo é o ERP certo para o seu negócio

Odoo é uma das plataformas ERP mais amplamente consideradas para empresas em crescimento, por um motivo simples: promete muito em um só lugar. Vendas, contabilidade, estoque

Jim SchwarzJim Schwarz 11 minutos de leitura
As alternativas de código aberto do WordPress apresentam imagem com fundo gradiente colorido, monitor de desktop, editor de código, visualização desfocada do painel e texto grande do título à esquerda.
Aplicativos Web e empresariais

As melhores alternativas de WordPress de código aberto personalizadas para desenvolvedores

O WordPress ainda é importante e ainda atende bem a uma grande variedade de sites. Seu diretório de plugins hospeda mais de 62.000 plugins e seu diretório de temas oferece mais de 14.000 temas gratuitos. Isso

Jim SchwarzJim Schwarz 14 minutos de leitura
Imagem de recurso Automad vs. WordPress com logotipos de plataforma e um título perguntando quais desenvolvedores de CMS devem escolher.
Aplicativos Web e empresariais

Automad x WordPress: uma comparação completa entre duas das melhores plataformas CMS

Automatd e WordPress resolvem o mesmo trabalho de duas maneiras muito diferentes. Automad é um CMS de arquivo simples e mecanismo de modelo, então o conteúdo reside em arquivos em vez de em um banco de dados, mas o WordPress,

Jim SchwarzJim Schwarz 9 minutos de leitura

Pronto para implantar? A partir de $ 2,48 / mês.

Nuvem independente, desde 2008. AMD EPYC, NVMe, 40 Gbps. Devolução do dinheiro em 14 dias.