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

DSpace 7 ORCID Integration
DSpace 7 ORCID IntegrationDSpace 7 ORCID Integration
DSpace 7 ORCID Integration4Science
 
REDIS intro and how to use redis
REDIS intro and how to use redisREDIS intro and how to use redis
REDIS intro and how to use redisKris Jeong
 
MongoDBのアレをアレする
MongoDBのアレをアレするMongoDBのアレをアレする
MongoDBのアレをアレするAkihiro Kuwano
 
Riverpodでテストを書こう
Riverpodでテストを書こうRiverpodでテストを書こう
Riverpodでテストを書こうShinnosuke Tokuda
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EEAntonio Gomes Rodrigues
 
Exploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondExploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondKaushal Dhruw
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
 
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門Masahito Zembutsu
 
AsyncTask アンチパターン
AsyncTask アンチパターンAsyncTask アンチパターン
AsyncTask アンチパターンHiroshi Kurokawa
 
Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Laurent Guérin
 
Composer bin plugin / ツールの依存管理から解放される
Composer bin plugin / ツールの依存管理から解放されるComposer bin plugin / ツールの依存管理から解放される
Composer bin plugin / ツールの依存管理から解放されるKentarou Takeda
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation ToolIzzet Mustafaiev
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)Alphorm
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkRed Hat Developers
 
BlueStore: a new, faster storage backend for Ceph
BlueStore: a new, faster storage backend for CephBlueStore: a new, faster storage backend for Ceph
BlueStore: a new, faster storage backend for CephSage Weil
 

La actualidad más candente (20)

DSpace 7 ORCID Integration
DSpace 7 ORCID IntegrationDSpace 7 ORCID Integration
DSpace 7 ORCID Integration
 
REDIS intro and how to use redis
REDIS intro and how to use redisREDIS intro and how to use redis
REDIS intro and how to use redis
 
MongoDBのアレをアレする
MongoDBのアレをアレするMongoDBのアレをアレする
MongoDBのアレをアレする
 
Zero con2019
Zero con2019Zero con2019
Zero con2019
 
Riverpodでテストを書こう
Riverpodでテストを書こうRiverpodでテストを書こう
Riverpodでテストを書こう
 
Tests de performances d'une application Java EE
Tests de performances d'une application Java EETests de performances d'une application Java EE
Tests de performances d'une application Java EE
 
Nginx dhruba mandal
Nginx dhruba mandalNginx dhruba mandal
Nginx dhruba mandal
 
Exploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & BeyondExploring the power of Gradle in android studio - Basics & Beyond
Exploring the power of Gradle in android studio - Basics & Beyond
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門インフラエンジニアのためのRancherを使ったDocker運用入門
インフラエンジニアのためのRancherを使ったDocker運用入門
 
AsyncTask アンチパターン
AsyncTask アンチパターンAsyncTask アンチパターン
AsyncTask アンチパターン
 
Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...
 
Composer bin plugin / ツールの依存管理から解放される
Composer bin plugin / ツールの依存管理から解放されるComposer bin plugin / ツールの依存管理から解放される
Composer bin plugin / ツールの依存管理から解放される
 
Gradle - the Enterprise Automation Tool
Gradle  - the Enterprise Automation ToolGradle  - the Enterprise Automation Tool
Gradle - the Enterprise Automation Tool
 
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
alphorm.com - Formation Oracle Database 11g DBA 1 (1Z0-052)
 
The Xtext Grammar Language
The Xtext Grammar LanguageThe Xtext Grammar Language
The Xtext Grammar Language
 
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech TalkSpring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
Spring Boot to Quarkus: A real app migration experience | DevNation Tech Talk
 
BlueStore: a new, faster storage backend for Ceph
BlueStore: a new, faster storage backend for CephBlueStore: a new, faster storage backend for Ceph
BlueStore: a new, faster storage backend for Ceph
 
An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
 
Introduction a Flutter
Introduction a FlutterIntroduction a Flutter
Introduction a Flutter
 

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. (11)

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
 
Filtrado de recursos en Maven
Filtrado de recursos en MavenFiltrado de recursos en Maven
Filtrado de recursos en Maven
 
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

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
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
 
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
 
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
 
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
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 

Último (10)

EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
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...
 
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.
 
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
 
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
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

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