SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
Maven
Trabajando con perfiles
Trabajando con perfiles

Índice de contenidos
‣ Introducción.
‣ Definición de perfiles.
‣ Ejecución de perfiles.
‣ ¿Qué parametrizamos?
‣ Activación de perfiles.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Introducción
‣ La portabilidad de un build en maven es la medida de lo fácil que es

construir un proyecto en diferentes entornos.
<build>
<plugins>
<plugin>
...
</plugin>
</plugins>
</build>

‣ Se necesitan mecanismos para personalizar de forma sencilla el

proceso de construcción software para poder adaptarlo a diferentes
entornos, entornos de producción, preproducción, desarrollo, etc.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Definición de perfiles
‣ Un perfil o profile es un conjunto de valores de configuración que

pueden activarse o sobreescribir unos valores por defecto bajo
determinadas circunstancias.

‣ El uso de perfiles permite personalizar el proceso de construcción

software para diferentes entornos.

‣ Los perfiles se definen en el fichero pom.xml y son identificados

mediante un id. Al ejecutar maven se podrá hacer referencia a esos
perfiles gracias a este identificador.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Definición de perfiles
‣ El elemento xml profile nos permite definir un perfil en maven. El

elemento xml profiles agrupa los distintos perfiles que se definen
dentro de un proyecto.

‣ Sintaxis:
...
<profiles>
<profile>
<id>idPerfil_A</id>
...
</profile>
<profile>
<id>idPerfil_B</id>
...
</profile>
</profiles>

...

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Definición de perfiles
‣ Ejemplo:
<profiles>
<profile>
<id>production</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<debug>false</debug>
<optimize>true</optimize>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

¿Qué parametrizamos?
‣ Cuando se define un perfil en un proyecto maven, parametrizamos

dicho proyecto para que, la ejecución de su ciclo de vida sea diferente
dependiendo del perfil seleccionado.

‣ Elementos parametrizables:
‣

Elemento repositories: se pueden modificar los repositorios con los que se trabaja.

‣

Elemento pluginRepositories: se pueden modificar los repositorios de plugins.

‣

Elemento dependencies: las dependencias asociados al proyecto pueden alterarse
en función del perfil con el que trabajamos.

‣

Elemento plugins: los plugins asociados al proyecto pueden alterarse en función
del perfil con el que trabajamos.

‣

Elemento properties: propiedades del proyecto.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

¿Qué parametrizamos?
‣ Elementos parametrizables (cont.):
‣

Elemento modules: módulos.

‣

Elemento reporting: configuración de los informes.

‣

Elemento dependencyManagement.

‣

Elemento distributionManagement.

‣

Elementos hijo del elemento build:
‣

<defaultGoal>

‣

<resources>

‣

<testResources>

‣

<finalName>

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

¿Qué parametrizamos?
‣ Ejemplo con propiedades:
<profiles>
<profile>
<id>produccion</id>
<properties>
<appserver.home>/opt/apacheProdServer</appserver.home>
</properties>
</profile>
<profile>
<id>preproduccion</id>
<properties>
<appserver.home>/opt/apachePreServer</appserver.home>
</properties>
</profile>
...
</profiles>

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

¿Qué parametrizamos?
‣ Ejemplo con plugins:
...
<profiles>
<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
...
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
…
</plugin>
</plugins>
</build>
</profile>

...

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Tipos de perfiles
‣ Existen diferentes tipos de perfiles dependiendo del fichero en el que

se define:
‣

Perfiles por proyecto: estos perfiles se definen en el fichero pom.xml del proyecto.

‣

Por usuario: se definen en el fichero setting.xml asociado al usuario, %USER_HOME
%/.m2/settings.xml.

‣

Perfil global: se definen en el fichero setting.xml asociado al sistema, %M2_HOME
%/conf/settings.xml.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Un perfil en maven se puede activar siguiendo diferentes

procedimientos:
‣

De forma explícita utilizando la consola.

‣

Gracias a la configuración definida para maven.

‣

Apoyándose en variables de entorno.

‣

Configuración del sistema operativo.

‣

Gracias a la existencia o no de determinados ficheros.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Activación explícita utilizando la consola:
‣

Cada perfil está identificado mediante el elemento xml id y al ejecutar maven se
hará referencia a él mediante el parámtro -P.

‣

Sintaxis:
> mvn commands -PidPerfil

‣

Ejemplo:

> mvn clean install -Pproduction

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Configuración en maven:
‣

El fichero settings.xml permite definir qué perfil debe aplicarse. Los elementos
activeProfiles y activeProfile son los responsables:

<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>
...
</mirror>
</mirrors>
<activeProfiles>
<activeProfile>PRODUCCION</activeProfile>
</activeProfiles>
</settings>

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Activación de un perfil en configuración:
‣

El elemento activation define las condiciones que activan el perfil en el que se
encuentra definido.

<profile>
<id>profile01</id>
<activation>
...
</activation>
</profile>

‣ Los posibles elementos hijos son:
‣

jdk, os, property, file.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Activación en función de la versión de jdk:
‣

Ejemplo:

...
<profiles>
<profile>
<id>jdk16</id>
<activation>
<jdk>1.6</jdk>
</activation>
...
</profile>
</profiles>
...

‣

Este perfil sólo se activa se maven se ejecuta con la versión 1.6 del Java
Development Kit.

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Activación en función del sistema operativo:
‣

Elemento os: sus elementos hijos que configuran el sistema operativo son name,
family, arch, etc.

‣

Ejemplo:

<activation>
...
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Activación en función del valor de una propiedad:
‣

Ejemplos:

...
<activation>
<property>
<name>mavenVersion</name>
<value>2.0.5</value>
</property>
</activation>
...

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Activación en función de la ausencia de propiedades:
‣

Ejemplos:

...
<profile>
<id>development</id>
<activation>
<property>
<name>!environment.type</name>
</property>
</activation>
</profile>
...

Preparado por Jesús Salinas Revelles
Trabajando con perfiles

Activación de perfiles
‣ Activación en función de la existencia o ausencia de ficheros:
‣

El elemento file define esta opción. Sus elementos hijos exists y missing definen
respectivamente si la condición es la existencia o la ausencia.

‣

Ejemplos:

<activation>
<file>
<exists>file2.properties</exists>
<missing>file1.properties</missing>
</file>
</activation>

Preparado por Jesús Salinas Revelles

Más contenido relacionado

La actualidad más candente

Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansibleKhizer Naeem
 
Using Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfileUsing Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfileRainer Gerhards
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 OverviewMike Ensor
 
Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Victor Iglesias
 
Google Cloud Computing compares GCE, GAE and GKE
Google Cloud Computing compares GCE, GAE and GKEGoogle Cloud Computing compares GCE, GAE and GKE
Google Cloud Computing compares GCE, GAE and GKESimon Su
 
Famix Next-Generation
Famix Next-GenerationFamix Next-Generation
Famix Next-GenerationJulienDelp
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHubVikram SV
 
Introduction to Jhipster
Introduction to JhipsterIntroduction to Jhipster
Introduction to JhipsterKnoldus Inc.
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Ji-Woong Choi
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Red Hat Developers
 
GCP CloudRun Overview
GCP CloudRun OverviewGCP CloudRun Overview
GCP CloudRun OverviewOliver Fierro
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...Jérôme Petazzoni
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Bo-Yi Wu
 
Optimizing Docker Images
Optimizing Docker ImagesOptimizing Docker Images
Optimizing Docker ImagesBrian DeHamer
 

La actualidad más candente (20)

Automation with ansible
Automation with ansibleAutomation with ansible
Automation with ansible
 
Using Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfileUsing Wildcards with rsyslog's File Monitor imfile
Using Wildcards with rsyslog's File Monitor imfile
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)Environment management in a continuous delivery world (3)
Environment management in a continuous delivery world (3)
 
Google Cloud Computing compares GCE, GAE and GKE
Google Cloud Computing compares GCE, GAE and GKEGoogle Cloud Computing compares GCE, GAE and GKE
Google Cloud Computing compares GCE, GAE and GKE
 
Famix Next-Generation
Famix Next-GenerationFamix Next-Generation
Famix Next-Generation
 
Maven tutorial
Maven tutorialMaven tutorial
Maven tutorial
 
Introduction to Git and GitHub
Introduction to Git and GitHubIntroduction to Git and GitHub
Introduction to Git and GitHub
 
Introduction to Jhipster
Introduction to JhipsterIntroduction to Jhipster
Introduction to Jhipster
 
Maven
MavenMaven
Maven
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
Event-driven autoscaling through KEDA and Knative Integration | DevNation Tec...
 
GCP CloudRun Overview
GCP CloudRun OverviewGCP CloudRun Overview
GCP CloudRun Overview
 
Ansible - Crash course
Ansible - Crash courseAnsible - Crash course
Ansible - Crash course
 
Ansible - Introduction
Ansible - IntroductionAnsible - Introduction
Ansible - Introduction
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Vue.js for beginners
Vue.js for beginnersVue.js for beginners
Vue.js for beginners
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
Optimizing Docker Images
Optimizing Docker ImagesOptimizing Docker Images
Optimizing Docker Images
 

Similar a Perfiles en maven

Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf springIBM
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y BackEric Zeidan
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterandrewzg
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Frameworkricsoc
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
Testing & debugging lightning web components
Testing & debugging lightning web componentsTesting & debugging lightning web components
Testing & debugging lightning web componentsFederico Giust
 
Continuous Integration
Continuous Integration Continuous Integration
Continuous Integration jose diaz
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con MavenEudris Cabrera
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaJorge Pacheco Mengual
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosaFco Javier Núñez Berrocoso
 
Insertar video
Insertar videoInsertar video
Insertar video0cero
 

Similar a Perfiles en maven (20)

Primefaces
PrimefacesPrimefaces
Primefaces
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
 
Video
VideoVideo
Video
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 
Test Unitarios y E2E front y Back
Test Unitarios y E2E front y BackTest Unitarios y E2E front y Back
Test Unitarios y E2E front y Back
 
Gestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniterGestionar mis proyectos con ayuda de CodeIgniter
Gestionar mis proyectos con ayuda de CodeIgniter
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Framework
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
Integrando sonar
Integrando sonarIntegrando sonar
Integrando sonar
 
Testing & debugging lightning web components
Testing & debugging lightning web componentsTesting & debugging lightning web components
Testing & debugging lightning web components
 
Continuous Integration
Continuous Integration Continuous Integration
Continuous Integration
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven
 
Atix13
Atix13Atix13
Atix13
 
Presentación Spring Boot en Autentia
Presentación Spring Boot en AutentiaPresentación Spring Boot en Autentia
Presentación Spring Boot en Autentia
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Magallanes, Herramienta de despliegue PHP sencilla y poderosa�Magallanes, Herramienta de despliegue PHP sencilla y poderosa�
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
 
Herramientas Digitales
Herramientas DigitalesHerramientas Digitales
Herramientas Digitales
 
Azure API Management
Azure API ManagementAzure API Management
Azure API Management
 
Insertar video
Insertar videoInsertar video
Insertar video
 

Más de Ematiz Tecnología, S.L.

Más de Ematiz Tecnología, S.L. (10)

Contenidos personalizados en alfresco ecm
Contenidos personalizados en alfresco ecmContenidos personalizados en alfresco ecm
Contenidos personalizados en alfresco ecm
 
El core de Alfresco 4.2
El core de Alfresco 4.2El core de Alfresco 4.2
El core de Alfresco 4.2
 
Estructura de un informe en JasperReports
Estructura de un informe en JasperReportsEstructura de un informe en JasperReports
Estructura de un informe en JasperReports
 
Introducción a JasperReports
Introducción a JasperReportsIntroducción a JasperReports
Introducción a JasperReports
 
Liferay 6 1, Internacionalización en nuestros desarrollos
Liferay 6 1, Internacionalización en nuestros desarrollosLiferay 6 1, Internacionalización en nuestros desarrollos
Liferay 6 1, Internacionalización en nuestros desarrollos
 
Liferay 6.1 Service Builder
Liferay 6.1  Service BuilderLiferay 6.1  Service Builder
Liferay 6.1 Service Builder
 
Liferay 6.1 Campos personalizados desde el panel de control
Liferay 6.1  Campos personalizados desde el panel de controlLiferay 6.1  Campos personalizados desde el panel de control
Liferay 6.1 Campos personalizados desde el panel de control
 
Liferay versión 6.1 Trabajando con LDAP, introducción
Liferay versión 6.1  Trabajando con LDAP, introducciónLiferay versión 6.1  Trabajando con LDAP, introducción
Liferay versión 6.1 Trabajando con LDAP, introducción
 
Liferay 6.1 Campos personalizados
Liferay 6.1 Campos personalizadosLiferay 6.1 Campos personalizados
Liferay 6.1 Campos personalizados
 
Trabajando con imagenes en liferay 6.1
Trabajando con imagenes en liferay 6.1Trabajando con imagenes en liferay 6.1
Trabajando con imagenes en liferay 6.1
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 

Último (11)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

Perfiles en maven

  • 2. Trabajando con perfiles Índice de contenidos ‣ Introducción. ‣ Definición de perfiles. ‣ Ejecución de perfiles. ‣ ¿Qué parametrizamos? ‣ Activación de perfiles. Preparado por Jesús Salinas Revelles
  • 3. Trabajando con perfiles Introducción ‣ La portabilidad de un build en maven es la medida de lo fácil que es construir un proyecto en diferentes entornos. <build> <plugins> <plugin> ... </plugin> </plugins> </build> ‣ Se necesitan mecanismos para personalizar de forma sencilla el proceso de construcción software para poder adaptarlo a diferentes entornos, entornos de producción, preproducción, desarrollo, etc. Preparado por Jesús Salinas Revelles
  • 4. Trabajando con perfiles Definición de perfiles ‣ Un perfil o profile es un conjunto de valores de configuración que pueden activarse o sobreescribir unos valores por defecto bajo determinadas circunstancias. ‣ El uso de perfiles permite personalizar el proceso de construcción software para diferentes entornos. ‣ Los perfiles se definen en el fichero pom.xml y son identificados mediante un id. Al ejecutar maven se podrá hacer referencia a esos perfiles gracias a este identificador. Preparado por Jesús Salinas Revelles
  • 5. Trabajando con perfiles Definición de perfiles ‣ El elemento xml profile nos permite definir un perfil en maven. El elemento xml profiles agrupa los distintos perfiles que se definen dentro de un proyecto. ‣ Sintaxis: ... <profiles> <profile> <id>idPerfil_A</id> ... </profile> <profile> <id>idPerfil_B</id> ... </profile> </profiles> ... Preparado por Jesús Salinas Revelles
  • 6. Trabajando con perfiles Definición de perfiles ‣ Ejemplo: <profiles> <profile> <id>production</id> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <debug>false</debug> <optimize>true</optimize> </configuration> </plugin> </plugins> </build> </profile> </profiles> Preparado por Jesús Salinas Revelles
  • 7. Trabajando con perfiles ¿Qué parametrizamos? ‣ Cuando se define un perfil en un proyecto maven, parametrizamos dicho proyecto para que, la ejecución de su ciclo de vida sea diferente dependiendo del perfil seleccionado. ‣ Elementos parametrizables: ‣ Elemento repositories: se pueden modificar los repositorios con los que se trabaja. ‣ Elemento pluginRepositories: se pueden modificar los repositorios de plugins. ‣ Elemento dependencies: las dependencias asociados al proyecto pueden alterarse en función del perfil con el que trabajamos. ‣ Elemento plugins: los plugins asociados al proyecto pueden alterarse en función del perfil con el que trabajamos. ‣ Elemento properties: propiedades del proyecto. Preparado por Jesús Salinas Revelles
  • 8. Trabajando con perfiles ¿Qué parametrizamos? ‣ Elementos parametrizables (cont.): ‣ Elemento modules: módulos. ‣ Elemento reporting: configuración de los informes. ‣ Elemento dependencyManagement. ‣ Elemento distributionManagement. ‣ Elementos hijo del elemento build: ‣ <defaultGoal> ‣ <resources> ‣ <testResources> ‣ <finalName> Preparado por Jesús Salinas Revelles
  • 9. Trabajando con perfiles ¿Qué parametrizamos? ‣ Ejemplo con propiedades: <profiles> <profile> <id>produccion</id> <properties> <appserver.home>/opt/apacheProdServer</appserver.home> </properties> </profile> <profile> <id>preproduccion</id> <properties> <appserver.home>/opt/apachePreServer</appserver.home> </properties> </profile> ... </profiles> Preparado por Jesús Salinas Revelles
  • 10. Trabajando con perfiles ¿Qué parametrizamos? ‣ Ejemplo con plugins: ... <profiles> <profile> <id>test</id> <build> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> ... </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> … </plugin> </plugins> </build> </profile> ... Preparado por Jesús Salinas Revelles
  • 11. Trabajando con perfiles Tipos de perfiles ‣ Existen diferentes tipos de perfiles dependiendo del fichero en el que se define: ‣ Perfiles por proyecto: estos perfiles se definen en el fichero pom.xml del proyecto. ‣ Por usuario: se definen en el fichero setting.xml asociado al usuario, %USER_HOME %/.m2/settings.xml. ‣ Perfil global: se definen en el fichero setting.xml asociado al sistema, %M2_HOME %/conf/settings.xml. Preparado por Jesús Salinas Revelles
  • 12. Trabajando con perfiles Activación de perfiles ‣ Un perfil en maven se puede activar siguiendo diferentes procedimientos: ‣ De forma explícita utilizando la consola. ‣ Gracias a la configuración definida para maven. ‣ Apoyándose en variables de entorno. ‣ Configuración del sistema operativo. ‣ Gracias a la existencia o no de determinados ficheros. Preparado por Jesús Salinas Revelles
  • 13. Trabajando con perfiles Activación de perfiles ‣ Activación explícita utilizando la consola: ‣ Cada perfil está identificado mediante el elemento xml id y al ejecutar maven se hará referencia a él mediante el parámtro -P. ‣ Sintaxis: > mvn commands -PidPerfil ‣ Ejemplo: > mvn clean install -Pproduction Preparado por Jesús Salinas Revelles
  • 14. Trabajando con perfiles Activación de perfiles ‣ Configuración en maven: ‣ El fichero settings.xml permite definir qué perfil debe aplicarse. Los elementos activeProfiles y activeProfile son los responsables: <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> ... </mirror> </mirrors> <activeProfiles> <activeProfile>PRODUCCION</activeProfile> </activeProfiles> </settings> Preparado por Jesús Salinas Revelles
  • 15. Trabajando con perfiles Activación de perfiles ‣ Activación de un perfil en configuración: ‣ El elemento activation define las condiciones que activan el perfil en el que se encuentra definido. <profile> <id>profile01</id> <activation> ... </activation> </profile> ‣ Los posibles elementos hijos son: ‣ jdk, os, property, file. Preparado por Jesús Salinas Revelles
  • 16. Trabajando con perfiles Activación de perfiles ‣ Activación en función de la versión de jdk: ‣ Ejemplo: ... <profiles> <profile> <id>jdk16</id> <activation> <jdk>1.6</jdk> </activation> ... </profile> </profiles> ... ‣ Este perfil sólo se activa se maven se ejecuta con la versión 1.6 del Java Development Kit. Preparado por Jesús Salinas Revelles
  • 17. Trabajando con perfiles Activación de perfiles ‣ Activación en función del sistema operativo: ‣ Elemento os: sus elementos hijos que configuran el sistema operativo son name, family, arch, etc. ‣ Ejemplo: <activation> ... <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> </activation> Preparado por Jesús Salinas Revelles
  • 18. Trabajando con perfiles Activación de perfiles ‣ Activación en función del valor de una propiedad: ‣ Ejemplos: ... <activation> <property> <name>mavenVersion</name> <value>2.0.5</value> </property> </activation> ... Preparado por Jesús Salinas Revelles
  • 19. Trabajando con perfiles Activación de perfiles ‣ Activación en función de la ausencia de propiedades: ‣ Ejemplos: ... <profile> <id>development</id> <activation> <property> <name>!environment.type</name> </property> </activation> </profile> ... Preparado por Jesús Salinas Revelles
  • 20. Trabajando con perfiles Activación de perfiles ‣ Activación en función de la existencia o ausencia de ficheros: ‣ El elemento file define esta opción. Sus elementos hijos exists y missing definen respectivamente si la condición es la existencia o la ausencia. ‣ Ejemplos: <activation> <file> <exists>file2.properties</exists> <missing>file1.properties</missing> </file> </activation> Preparado por Jesús Salinas Revelles