Está en la página 1de 30

Maven

Build & Deployment


Part II

Carlos Alberto Lpez


newalopez@gmail.com

Agenda
Recapitulando Part I
Maven Revisin POM Proyecto
Ejemplo
Maven Archiva
Maven Deploy
Maven Release Plugin

prepare
prepare-with-pom
perform [SCM tag]
update Versions

Conclusiones

Agenda
Recapitulando Part I
Maven Revisin POM Proyecto
Ejemplo
Maven Archiva
Maven Deploy
Maven Release Plugin

prepare
prepare-with-pom
perform [SCM tag]
update Versions

Conclusiones

Recapitulando Part I
clean, compile, test,
install, deploy.

Agenda
Recapitulando Part I
Maven Revisin POM Proyecto
Ejemplo
Maven Archiva
Maven Deploy
Maven Release Plugin

prepare
prepare-with-pom
perform [SCM tag]
update Versions

Conclusiones

Agenda
Recapitulando Part I
Maven Revisin POM Proyecto
Ejemplo
Maven Archiva
Maven Deploy
Ciclo de Vida Build / Install / Deploy
Maven Release Plugin

prepare
prepare-with-pom
perform [SCM tag]
update Versions

Conclusiones

Maven Repositorio local:

<USER_HOME>/.m2/repository

Repositorio remotos:

http://repo.maven.apache.org
http://search.maven.org

Maven -

Es un software open source


desarrollado por Apache para la
gestin de repositorios.
Permitiendo:
Administrar artefactos.
Seguridad de acceso (roles y perfiles).
Conexin proxy a otros repositorios.
Indexacin, bsqueda.
Reportes de uso (estadsticas)

Maven

Uso de artefactos propios

Maven

Uso conexiones proxy para repositorios remotos

Agenda
Recapitulando Part I
Maven Revisin POM Proyecto
Ejemplo
Maven Archiva
Maven Deploy
Maven Release Plugin

prepare
prepare-with-pom
perform [SCM tag]
update Versions

Conclusiones

Maven - Deploy
mvn deploy:
Invoca la fase deploy

Es el proceso de distribuir el artifact en un


repositorio remoto.

Maven - Deploy
Modificacin al POM
[...]
<distributionManagement>
<repository>
<id>archiva.internal</id>
<name>Internal Release Repository</name>
<url>http://beta:8081/archiva/repository/internal/</url>
</repository>
<snapshotRepository>
<id>archiva.snapshots</id>
<name>Internal Snapshot Repository</name>
<url>http://beta:8081/archiva/repository/snapshots/</url>
</snapshotRepository>
</distributionManagement>

[...]

Maven - Deploy
Agregar servidores
[...]
<settings>
...
<servers>
<server>
<id>archiva.internal</id>
<username>{archiva-deployment-user}</username>
<password>{archiva-deployment-pwd}</password>
</server>
<server>
<id>archiva.snapshots</id>
<username>{archiva-deployment-user}</username>
<password>{archiva-deployment-pwd}</password>
</server>
...
</servers>
...
</settings>
[...]

Revision POM Ej
Archiva (Rep. Local)
Deploy (Rep. Local)

Agenda
Recapitulando Part I
Maven Revisin POM Proyecto
Ejemplo
Maven Archiva
Maven Deploy
Ciclo de Vida Build / Install / Deploy
Maven Release Plugin

prepare
prepare-with-pom
perform [SCM tag]
update Versions

Conclusiones

Release
Es un plugin que tiene como objetivo,
ahorrar tiempo en tareas repetitivas, as
como asegurarnos de usar las mejores
practicas para la entrega de nuestros
proyectos.
Sus pasos principales son: prepare y
perform.

Release

Preparando el proyecto.

<project>
...
<scm>
<developerConnection>scm:svn:https://host/repos/myapp/trunk/myco
mponent/</developerConnection>
</scm>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.2</version>
</plugin>
</plugins>
...
</build>
...
</project>

Release
release:clean

Por lo general se ejecuta despues de un


release:perform exitoso, se encarga de
limpiar la copia de trabajo y no afecta a los
pasos previos.

release:prepare

Se asegura que el POM est listo para un


release y prepara el SCM para eventualmente
grabar una versin TAG del release.

Release
release:rollback
Deshace los cambios realizados por un
release, para esto es necesario que no
se haya limpiado (release:clean) el
proyecto, generalmente se usa cuando
hay un error.

release:perform
Ejecuta el Release en nuestro SCM, segn
la especificacin creada en nuestro
release:prepare.

Release
release:update-versions
Actualiza la versin del proyecto en el
POM, esto hace la operacin normal de
release:prepare pero sin crear un TAG
en el SCM.

Prepare
release:prepare:
- Revisa que no haya cambios sin subir al
respositorio de fuentes
- Revisa que no haya dependencias SNAPSHOT
- Solicita la versin de x-SNAPSHOT [ prompt ]
- Corre casos de prueba
- Commit del POM a SCM
- TAG de Version al SCM para el Release
- Solicita versin de SNAPSHOT para continuar el
desarrollo
- Commit de POM nuevo.
Ejecutar: mvn release:prepare

Perform
mvn release:perform
Hace un checkout del SCM, con el TAG
especificado, creado por la meta
release:prepare.
Ejecuta las metas predeterminadas de
maven para un release del proyecto:
deploy, site-deploy

Para aclarar conceptos sobre cmo se trabaja a


la hora de un release se muestra la siguiente
imagen:

e
par
e
r
p
:
ase
rele

Repositorio
Subversin (SVN)

Trunk
Branches
Tag
/ versin 1.0
/ versin 1.x

Maven

rele
ase
:pe
rfor
m

/net
/org
/com
Repositorio Maven
(Archiva)

/bytesw
/proyecto

Rollback
mvn release:rollback
- Si no ha ejecutado release:clean, an
quedarn los archivos de backup, por lo
mismo puede ejecutarse.
Esto regresa los POM a su estado prerelease.
El branch o tag generado para el release
tambin es eliminado. [ Dependiendo de la
version del plugin de maven, Jira Issue
codehaus: MRELEASE-229 ]

Update-versions
Una forma fcil de cambiar de versin
nuestros proyectos, sobre todo cuando
estos contienen multiples mdulos:
mvn release:update-versions

Conclusiones

What's Next?
Integracin Continua
Jenkins ?
Bamboo ?
Continuum ?

Agradecimiento

Marvin Daz

Oswaldo Lpez

Virgil Jones

Eder Santos

Gilberto Orozco

Gracias!
newalopez@gmail.com
Stackoverflow: newalopez

También podría gustarte