entorn desenvolupament
DESCRIPTION
Entorn desenvolupament. Eclipse + Tomcat + Subversion + Maven. Com volem el nostre entorn ?. Volem entorn per poder desevolupar còmodament aplicacions web Java - PowerPoint PPT PresentationTRANSCRIPT
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!