Guia para perfis Maven
1. Visão geral
Maven profiles can be used to create customized build configurations, como almejar um nível de granularidade de teste ou um ambiente de implantação específico.
Neste tutorial, aprenderemos como trabalhar com perfis Maven.
2. Um exemplo básico
Normalmentewhen we run mvn package, the unit tests are executed também. Maswhat if we want to quickly package the artifact and run it para ver se funciona?
Primeiro, vamos criar um perfilno-tests que define a propriedademaven.test.skip paratrue:
no-tests
true
A seguir, executaremos o perfil executando o comandomvn package -Pno-tests. Now the artifact is created and the tests are skipped. Nesse caso, o comandomvn package -Dmaven.test.skip teria sido mais fácil.
No entanto, essa foi apenas uma introdução aos perfis do Maven. Vamos dar uma olhada em algumas configurações mais complexas.
3. Declarando perfis
Na seção anterior, vimos como criar um perfil. We can configure as many profiles as we want dando-lhes ids únicos.
Digamos que desejamos criar um perfil que execute apenas nossos testes de integração e outro para um conjunto de testes de mutação.
Começaríamos especificando umid para cada um em nosso arquivopom.xml:
integration-tests
mutation-tests
Dentro de cada elementoprofile,we can configure many elements such as dependencies, plugins, resources, finalName.
Portanto, para o exemplo acima, poderíamos adicionar plug-ins e suas dependências separadamente paraintegration-testsemutation-tests.
A separação de testes em perfis pode tornar a compilação padrão mais rápida, concentrando-se, digamos, apenas nos testes de unidade.
3.1. Escopo do perfil
Agora, acabamos de colocar esses perfis em nosso arquivopom.xml, que os declara apenas para o nosso projeto.
Mas, no Maven 3, podemos adicionar perfis a qualquer um dos três locais:
-
Perfis específicos do projeto vão para o arquivopom.xml file do projeto
-
Perfis específicos de usuário vão para o arquivosettings.xml do usuário
-
Perfis globais vão para o arquivo globalsettings.xml
Observe que o Maven 2 suportava um quarto local, mas isso foi removido no Maven 3.
We try to configure profiles in the pom.xml whenever possible. O motivo é que queremos usar os perfis em nossas máquinas de desenvolvimento e nas máquinas de construção. Usar osettings.xml é mais difícil e sujeito a erros, pois temos que distribuí-lo entre os ambientes de construção nós mesmos.
4. Ativando perfis
Depois de criarmos um ou mais perfiswe can start using them, or in other words, activating them.
4.1. Vendo quais perfis estão ativos
Let’s use the help:active-profiles goal to see which profiles are active em nossa construção padrão:
mvn help:active-profiles
Na verdade, como não ativamos nada ainda, obtemos:
The following profiles are active:
Bem, nada.
Vamos ativá-los em um momento. Mas rapidamente, outra forma de ver o que está ativado éinclude the maven-help-plugin in our pom.xml and tie the active-profiles goal to the compile phase:
org.apache.maven.plugins
maven-help-plugin
3.2.0
show-profiles
compile
active-profiles
Agora, vamos começar a usá-los! Veremos algumas maneiras diferentes.
4.2. Usando-P
Na verdade, já vimos uma maneira no início, que é que podemosactivate profiles with the -P argument.
Então, vamos começar habilitando o perfilintegration-test:
mvn package -P integration-tests
Se verificarmos os perfis ativos, com o comandomaven-help-plugin oumvn help:active-profiles -P integration-tests obteremos o seguinte resultado:
The following profiles are active:
- integration-tests
Caso desejemos ativar vários perfis ao mesmo tempo, usamos uma lista de perfis separados por vírgula:
mvn package -P integration-tests,mutation-tests
4.3. Ativo por padrão
Se sempre queremos executar um perfil, podemos ativá-lo por padrão:
integration-tests
true
Então, podemos executarmvn package sem especificar os perfis, e podemos verificar se o perfilintegration-test está ativo.
However, if we run the Maven command and enable another profile than the activeByDefault profile is skipped. Então, quando executamosmvn package -P mutation-tests, apenas o perfilmutation-tests está ativo.
Quando ativamos de outras maneiras, o perfilactiveByDefault também é ignorado, como veremos nas próximas seções.
4.4. Baseado em uma propriedade
Podemos ativar perfis na linha de comando. No entanto, às vezes é mais conveniente se eles forem ativados automaticamente. Por exemplo,we can base it on a -D system property:
active-on-property-environment
environment
Agora ativamos o perfil com o comandomvn package -Denvironment.
Também é possível ativar um perfil se uma propriedade não estiver presente:
!environment
Ou podemos ativar o perfilif the property has a specific value:
environment
test
Agora podemos executar o perfil commvn package -Denvironment=test.
Por fim, podemos ativar o perfil se a propriedade tiver um valor diferente do valor especificado:
environment
!test
4.5. Baseado na versão do JDK
Outra opção é ativar um perfil com base no JDK em execução na máquina. Nesse caso, queremos ativar o perfil se a versão do JDK começar com 11:
active-on-jdk-11
11
Também podemos usar intervalos para a versão JDK, conforme explicado emMaven Version Range Syntax.
4.6. Baseado no sistema operacional
Como alternativa, podemos ativar o perfil com base em algumas informações do sistema operacional.
E se não tivermos certeza disso, podemos primeiro usar o comandomvn enforcer:display-info, que fornece a seguinte saída em minha máquina:
Maven Version: 3.5.4
JDK Version: 11.0.2 normalized as: 11.0.2
OS Info: Arch: amd64 Family: windows Name: windows 10 Version: 10.0
Depois disso, podemos configurar um perfil que é ativado apenas no Windows 10:
active-on-windows-10
windows 10
Windows
amd64
10.0
4.7. Baseado em um arquivo
Outra opção é executar um perfilif a file exists or is missing.
Então, vamos criar um perfil de teste que só executa setestreport.html ainda não estiver presente:
target/testreport.html
5. Desativando um perfil
Vimos muitas maneiras de ativar perfis, mas às vezes precisamos desativar um também.
Para desativar um perfil, podemos usar o '!' ou ‘-‘.
Portanto, para desabilitar o perfilactive-on-jdk-11, executamos o comandomvn compile -P -active-on-jdk-11.
6. Conclusão
Neste artigo, vimos como trabalhar com perfis Maven, para que possamos criar diferentes configurações de compilação.
Os perfis ajudam a executar elementos específicos da construção quando precisamos deles. Isso otimiza nosso processo de criação e ajuda a fornecer um feedback mais rápido aos desenvolvedores.
Sinta-se à vontade para dar uma olhada no arquivopom.xml concluído emGitHub.