Entorn desenvolupament
description
Transcript of Entorn desenvolupament
![Page 1: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/1.jpg)
Entorn desenvolupament
Eclipse + Tomcat + Subversion + Maven
![Page 2: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/2.jpg)
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
![Page 3: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/3.jpg)
http://www.eclipse.org/downloads/
![Page 4: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/4.jpg)
http://tomcat.apache.org/
![Page 5: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/5.jpg)
Afegim el Tomcat a Eclipse
![Page 6: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/6.jpg)
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
![Page 7: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/7.jpg)
Plugin maven: m2e-wtp
![Page 8: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/8.jpg)
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
![Page 9: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/9.jpg)
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
![Page 10: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/10.jpg)
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)
![Page 11: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/11.jpg)
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
![Page 12: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/12.jpg)
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ó
![Page 13: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/13.jpg)
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
![Page 14: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/14.jpg)
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
![Page 15: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/15.jpg)
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
![Page 16: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/16.jpg)
Ú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
![Page 17: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/17.jpg)
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
![Page 18: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/18.jpg)
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
![Page 19: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/19.jpg)
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
![Page 20: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/20.jpg)
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!
![Page 21: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/21.jpg)
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
![Page 22: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/22.jpg)
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
![Page 23: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/23.jpg)
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
![Page 24: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/24.jpg)
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
![Page 25: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/25.jpg)
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
![Page 26: Entorn desenvolupament](https://reader035.fdocuments.net/reader035/viewer/2022062322/568147ee550346895db526c4/html5/thumbnails/26.jpg)
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!