Maven - Construir Perfis
O que é Build Profile?
Um perfil de construção é um conjunto de valores de configuração, que pode ser usado para definir ou substituir os valores padrão da construção Maven. Usando um perfil de construção, você pode customizar a construção para diferentes ambientes, como ambientes de Produção v / s Desenvolvimento.
Os perfis são especificados no arquivo pom.xml usando seus elementos activeProfiles / profiles e são acionados de várias maneiras. Os perfis modificam o POM no momento da construção e são usados para fornecer aos parâmetros diferentes ambientes de destino (por exemplo, o caminho do servidor de banco de dados nos ambientes de desenvolvimento, teste e produção).
Tipos de Perfil de Construção
Perfis de construção são principalmente de três tipos.
Tipo | Onde está definido |
---|---|
Por Projeto | Definido no arquivo POM do projeto, pom.xml |
Por usuário | Definido no arquivo xml de configurações do Maven (% USER_HOME% /. M2 / settings.xml) |
Global | Definido no arquivo xml de configurações globais Maven (% M2_HOME% / conf / settings.xml) |
Ativação de Perfil
Um perfil de construção Maven pode ser ativado de várias maneiras.
- Usando explicitamente a entrada do console de comando.
- Por meio de configurações de maven.
- Baseado em variáveis de ambiente (variáveis de usuário / sistema).
- Configurações do sistema operacional (por exemplo, família Windows).
- Arquivos presentes / ausentes.
Exemplos de ativação de perfil
Vamos supor a seguinte estrutura de diretório do seu projeto -
Agora, sob src/main/resources, existem três arquivos específicos do ambiente -
Sr. Não. | Nome e descrição do arquivo |
---|---|
1 | env.properties configuração padrão usada se nenhum perfil for mencionado. |
2 | env.test.properties configuração de teste quando o perfil de teste é usado. |
3 | env.prod.properties configuração de produção quando o perfil de produção é usado. |
Ativação Explícita de Perfil
No exemplo a seguir, vamos anexar maven-antrun-plugin: run goal para testar a fase. Isso nos permitirá ecoar mensagens de texto para diferentes perfis. Estaremos usando pom.xml para definir perfis diferentes e ativaremos o perfil no console de comando usando o comando maven.
Suponha que criamos o seguinte pom.xml na pasta C: \ MVN \ project.
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.companyname.projectgroup</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<profiles>
<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Using env.test.properties</echo>
<copy file="src/main/resources/env.test.properties"
tofile="${project.build.outputDirectory}
/env.properties"/>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Agora abra o console de comando, vá para a pasta que contém pom.xml e execute o seguinte mvncomando. Passe o nome do perfil como argumento usando a opção -P.
C:\MVN\project>mvn test -Ptest
O Maven começará a processar e exibir o resultado do perfil de construção de teste.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------
[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0
[INFO] task-segment: [test]
[INFO] ------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] Copying 3 resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\MVN\project\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: C:\MVN\project\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
There are no tests to run.
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] [antrun:run {execution: default}]
[INFO] Executing tasks
[echo] Using env.test.properties
[INFO] Executed tasks
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Sun Jul 08 14:55:41 IST 2012
[INFO] Final Memory: 8M/64M
[INFO] ------------------------------------------------------------------
Agora, como exercício, você pode realizar as seguintes etapas -
Adicione outro elemento de perfil ao elemento de perfis de pom.xml (copie o elemento de perfil existente e cole-o onde os elementos de perfil terminam).
Atualize a id deste elemento de perfil de teste para normal.
Atualize a seção da tarefa para echo env.properties e copie env.properties para o diretório de destino.
Repita novamente as três etapas acima, atualize a id para a seção prod e task para env.prod.properties.
Isso é tudo. Agora você tem três perfis de construção prontos (normal / teste / prod).
Agora abra o console de comando, vá para a pasta que contém pom.xml e execute o seguinte mvncomandos. Passe os nomes dos perfis como argumento usando a opção -P.
C:\MVN\project>mvn test -Pnormal
C:\MVN\project>mvn test -Pprod
Verifique a saída da construção para ver a diferença.
Ativação do perfil por meio das configurações do Maven
Abra o Maven settings.xml arquivo disponível no diretório% USER_HOME% /. m2 onde %USER_HOME%representa o diretório inicial do usuário. Se o arquivo settings.xml não estiver lá, crie um novo.
Adicione o perfil de teste como um perfil ativo usando o nó Perfis ativos, conforme mostrado abaixo no exemplo.
<settings xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors>
<mirror>
<id>maven.dev.snaponglobal.com</id>
<name>Internal Artifactory Maven repository</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<activeProfiles>
<activeProfile>test</activeProfile>
</activeProfiles>
</settings>
Agora abra o console de comando, vá para a pasta que contém pom.xml e execute o seguinte mvncomando. Não passe o nome do perfil usando a opção -P. O Maven exibirá o resultado do perfil de teste sendo um perfil ativo.
C:\MVN\project>mvn test
Ativação de perfil por meio de variáveis de ambiente
Agora remova o perfil ativo do maven settings.xml e atualize o perfil de teste mencionado em pom.xml. Adicione o elemento de ativação ao elemento de perfil conforme mostrado abaixo.
O perfil de teste será acionado quando a propriedade do sistema "env" for especificada com o valor "test". Crie uma variável de ambiente "env" e defina seu valor como "teste".
<profile>
<id>test</id>
<activation>
<property>
<name>env</name>
<value>test</value>
</property>
</activation>
</profile>
Vamos abrir o console de comando, ir para a pasta que contém pom.xml e executar o seguinte mvn comando.
C:\MVN\project>mvn test
Ativação de perfil via sistema operacional
Elemento de ativação para incluir detalhes do sistema operacional conforme mostrado abaixo. Este perfil de teste será acionado quando o sistema for Windows XP.
<profile>
<id>test</id>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
</profile>
Agora abra o console de comando, vá para a pasta que contém pom.xml e execute o seguinte mvncomandos. Não passe o nome do perfil usando a opção -P. O Maven exibirá o resultado do perfil de teste sendo um perfil ativo.
C:\MVN\project>mvn test
Ativação de perfil via arquivo presente / ausente
Agora, elemento de ativação para incluir detalhes do sistema operacional, conforme mostrado abaixo. O perfil de teste será acionado quandotarget/generated-sources/axistools/wsdl2java/com/companyname/group está desaparecido.
<profile>
<id>test</id>
<activation>
<file>
<missing>target/generated-sources/axistools/wsdl2java/
com/companyname/group</missing>
</file>
</activation>
</profile>
Agora abra o console de comando, vá para a pasta que contém pom.xml e execute o seguinte mvncomandos. Não passe o nome do perfil usando a opção -P. O Maven exibirá o resultado do perfil de teste sendo um perfil ativo.
C:\MVN\project>mvn test