Entorn desenvolupament

Post on 14-Jan-2016

45 views 0 download

description

Entorn desenvolupament. Eclipse + Tomcat + Subversion + Maven. Com volem el nostre entorn ?. Volem entorn per poder desevolupar còmodament aplicacions web Java - PowerPoint PPT Presentation

Transcript of Entorn desenvolupament

Entorn desenvolupament

Eclipse + Tomcat + Subversion + Maven

Com volem el nostre entorn?

• Volem entorn per poder desevolupar còmodament aplicacions web Java

• Volem que sigui fàcil poder construir i empaquestar les aplicacions, sense necessitar el IDE que fem servir per programar

• Volem poder emmagatzemar el codi font de forma que tinguem un control de versions

http://www.eclipse.org/downloads/

http://tomcat.apache.org/

Afegim el Tomcat a Eclipse

Tomcat + Eclipse

• Li diem a Eclipse on està el Tomcat• Eclipse crea un projecte Servers• Podem parar-lo i engegar-lo a la pestanya

servers• Veiem els logs en consola• Eclipse permet afegir i treure al Tomcat

projectes de tipus web

Plugin maven: m2e-wtp

Què és Maven?

• És una eina per gestionar el cicle de vida d’un projecte Java

• Línia de comandes• Semblant al “make”, pero més declaratiu• Declarem en un fitxer les característiques del

projecte i en base a aixo sap que ha de fer• Proporciona una forma unificada de construir

un projecte i uns estàndars

Nomenclatura de Maven

• Artifacts– Son els projectes que gestiona Maven– Definits per grup, id i versió

• Archetypes– Son esquelets de projecte. Per exemple, una aplicació

normal o una aplicació web.• Repositoris– Maven té un repositori central amb les totes les

versions de les llibreries més utilitzades– Repositori local on deixa els nostres artifacts

Cicle de vida de projecte

compile

test

deploy

install

package

- Obtenir dependències, Compilar el codi, copiar els fitxers de recursos…

- Passar els jocs de prova (JUnit) i aturar el procés si no es passen

- Generar el paquet del projecte (jar, war…), o sigui, el “artifact”

- Copiar el artifact val repositori local

- Copiar el artifact al repositori remot (no confondre amb fer deploy a Tomcat)

Estructura de directoris estàndar

/src//main/ projecte propiament

/java/ fitxers per compilar/resources/ fitxers no compilables

/test/ tests del projecte/java//resources/

/target/ fitxers compilats i paquets

/pom.xml

Pom.xml

• Fitxer on definim el projecte• Grup, ID i versió per definir el artifact• Dependències d’altres llibreries• Plugins addicionals que pugui necessitar i en

quina fase del cicle de vida s’utilitzen– Ex: excutar l’aplicació en un Tomcat

• Perfils– Ex: versio de desenvolupament / producció

Dependències

• És la característica més important de Maven• Al pom.xml declarem els artifacts dels que

depen el nostre projecte• Maven va a buscar-los al seu repositori i els

deixa al repositori local• Es baixa l’arbre complet de dependències de

forma automàtica

I que pinta Eclipse aquí?

• Plugin que inclou Maven• Crea els projectes amb l’estructura de

directoris de maven i el pom.xml• Al revés, genera la configuració de Eclipse a

partir d’un pom.xml• Eclipse crida a maven per les tasques de

compilació i per gestionar les dependències• Resultat: tenim un projecte Eclipse + Maven

Exemple: Places lliures

• Farem una pàgina que crida la URL que retorna les places lliures a les aules de la FIB en format JSON.

• Crearem un projecte Maven de tipus web• Maven-webapp-archetype• Dependències: – json-lib, per parsejar el fitxer– JSTL, per la pàgina on es mostrarà– servlet-api-2.5, pel Tomcat

Últim pas: Subversion

• Permet treball en equip sobre un mateix projecte, mantenint versions

• Cal un plugin a eclipse– Eclipse marketplace: subclipse

• Per compartir un projecte– Team > Share Project, seleccionar SVN– Especificar un repositori– Pugem el projecte al nostre repositori

Subversion a la FIB

• La FIB proporciona un servidor subversion– https://svn.fib.upc.edu/svn/user.name

• Protegit i privat amb user/pass del Racó• Possibilitat de compartir amb altres usuaris

del Racó (companys de pràctiques)– https://svn.fib.upc.edu/editarPermisos

Operacions bàsiques

• Update– Obté els últims canvis que s’han fet– Fer-ho sempre abans de començar a treballar– Ens assegurem de tenir una versió “fresca” amb els

últims canvis• Commit– Envia els canvis al servidor– Deixa posar un comentari. Es una bona pràctica

• Checkout / import– Baixar un projecte / importar-lo

Convencions del repositori

• trunk– Es on tenim la versió principal del nostre projecte– Compila i funciona (i si no, no s’hauria de pujar)

• tags– Una carpeta per cada versió– Permet fer un “update” del codi a una versió

• branches– Son branques amb desenvolupaments “a mitges”– Un cop provades, es fa un “merge” amb el trunk

Concurrència

• Què passa si dos persones editen el mateix fitxer al mateix temps?– Usuari 1: update i edita el aules.jsp– Usuari 2: update i editar el aules.jsp– Usuari 1: commit dels canvis– Usuari 2: commit dels canvis

• Si no han tocat exactament la mateixa línia, es fa un merge dels 2 fitxers.

• Si han tocat el mateix: conflicte!

Línia de comandes

• Maven i SVN tenen linia de comandes• Podem alternar l’us desde dintre d’Eclipse i

des de fora (com a molt fem un “refresh”)• Maven permet en linia de comandes cridar a

plugins per fer moltes més coses– Des d’eclipse es pot pero s’han de crear “run

configurations” i no és tan àgil

Traient suc a l’entorn muntat…

• Executar l’aplicació maven en un Tomcat propi, només amb Maven– Mvn Tomcat:run

• Enviar l’aplicació a un Tomcat remot utilitzant el Tomcat Manager– Primer configurem el pom.xml – Mvn tomcat:deploy –Pdev– Mvn tomcat:deploy -Pprod

Traient més suc a l’entorn muntat…

• Crear una versió: canviar el pom.xml, pujar la versió al SVN i crear un tag– Mvn release:prepare– Mvn release:perform

• Fer un web amb la informació bàsica del projecte: javadocs, anàlisis del codi…– Mvn site:site

Integració contínua

• Quan algú puja codi al subversion…– Baixa el codi del repositori– Compila (amb Maven no cal Eclipse!)– Passa els testos– Si algo falla, envia un mail

• A les nits (nightly build)– Baixem el que hi ha al repositori– Construim el projecte i el deixem públic– Generem informes

Què més podriem fer

• Mantenir un ranking de les persones que han pujat més codi

• Mantenir un ranking de qui ha fet petar més vegades la compilació

• Publicar automàticament l’aplicació• Executar testos més complicats– Pujar l’aplicació a un servidor de prova– Passar un test de càrrega

Conclusions

• Maven ens ajuda a organitzar el nostre projecte i a que poguem construir-lo desde linia de comandes

• Eclipse ens permet facilment treballar amb Maven, no hem de triar un o altre

• Des d’eclipse podem gestionar el nostre codi a Subversion

• … si ho tenim tot, podem tenir majordom!