260 likes | 384 Views
Entorn desenvolupament. Eclipse + Tomcat + Subversion + Maven. Com volem el nostre entorn ?. Volem entorn per poder desevolupar còmodament aplicacions web Java
E N D
Entorndesenvolupament Eclipse + Tomcat + Subversion + Maven
Comvolem el nostreentorn? • Volementorn per poder desevoluparcòmodamentaplicacions web Java • Volem que siguifàcil poder construir i empaquestar les aplicacions, sensenecessitar el IDE que fem servir per programar • Volem poder emmagatzemar el codifont de forma que tinguem un control de versions
Tomcat + Eclipse • Li diem a Eclipse onestà el Tomcat • Eclipse crea un projecte Servers • Podem parar-lo i engegar-lo a la pestanya servers • Veiemelslogs en consola • Eclipse permetafegir i treure al Tomcatprojectes de tipus web
QuèésMaven? • És una eina per gestionar el cicle de vida d’unprojecte Java • Línia de comandes • Semblant al “make”, pero mésdeclaratiu • Declarem en un fitxer les característiques del projecte i en base a aixosap que ha de fer • Proporciona una forma unificada de construir un projecte i unsestàndars
Nomenclatura de Maven • Artifacts • Son elsprojectes 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 llibreriesmésutilitzades • Repositori local ondeixaelsnostresartifacts
Cicle de vida de projecte - Obtenirdependències, Compilar el codi, copiar elsfitxers de recursos… compile test - Passarelsjocs de prova (JUnit) i aturar el procés si no es passen package - Generar el paquet del projecte (jar, war…), o sigui, el “artifact” install - Copiar el artifact val repositori local deploy - Copiar el artifact al repositoriremot (no confondreambferdeploy a Tomcat)
Estructura de directorisestàndar /src/ /main/ projectepropiament /java/ fitxers per compilar /resources/ fitxers no compilables /test/ tests del projecte /java/ /resources/ /target/ fitxerscompilats i paquets /pom.xml
Pom.xml • Fitxerondefinim el projecte • Grup, ID i versió per definir el artifact • Dependènciesd’altresllibreries • Pluginsaddicionals que puguinecessitar i en quina fase del cicle de vida s’utilitzen • Ex: excutarl’aplicació en un Tomcat • Perfils • Ex: versio de desenvolupament / producció
Dependències • És la característica mésimportant de Maven • Al pom.xml declaremelsartifactsdels que depen el nostreprojecte • Maven va a buscar-los al seurepositori i elsdeixa al repositori local • Es baixal’arbrecomplet de dependències de forma automàtica
I que pinta Eclipse aquí? • Plugin que inclouMaven • Crea elsprojectesambl’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 projecteMaven de tipus web • Maven-webapp-archetype • Dependències: • json-lib, per parsejar el fitxer • JSTL, per la pàginaon es mostrarà • servlet-api-2.5, pelTomcat
Últimpas: Subversion • Permettreball en equip sobre un mateixprojecte, mantenintversions • Cal un plugin a eclipse • Eclipse marketplace: subclipse • Per compartir un projecte • Team > Share Project, seleccionar SVN • Especificar un repositori • Pugem el projecte al nostrerepositori
Subversion a la FIB • La FIB proporciona un servidor subversion • https://svn.fib.upc.edu/svn/user.name • Protegit i privatambuser/pass del Racó • Possibilitat de compartir ambaltresusuaris del Racó (companys de pràctiques) • https://svn.fib.upc.edu/editarPermisos
Operacionsbàsiques • Update • Obtéelsúltimscanvis que s’hanfet • Fer-hosempreabans de començar a treballar • Ensassegurem de tenir una versió “fresca” ambelsúltimscanvis • Commit • Enviaelscanvis al servidor • Deixa posar un comentari. Es una bona pràctica • Checkout / import • Baixar un projecte / importar-lo
Convencionsdel repositori • trunk • Es ontenim la versió principal del nostreprojecte • Compila i funciona (i si no, no s’hauria de pujar) • tags • Una carpeta per cada versió • Permetfer un “update” del codi a una versió • branches • Son branques ambdesenvolupaments “a mitges” • Un copprovades, es fa un “merge” amb el trunk
Concurrència • Quèpassa si dos persones editen el mateixfitxer al mateixtemps? • Usuari 1: update i edita el aules.jsp • Usuari 2: update i editar el aules.jsp • Usuari 1: commitdelscanvis • Usuari 2: commitdelscanvis • Si no han tocatexactament la mateixalínia, es fa un mergedels 2 fitxers. • Si han tocat el mateix: conflicte!
Línia de comandes • Maven i SVN tenenlinia de comandes • Podem alternar l’us desde dintred’Eclipse i des de fora (com a moltfem un “refresh”) • Mavenpermet en linia de comandes cridar a plugins per fermoltesmés coses • Des d’eclipse es pot pero s’han de crear “runconfigurations” i no és tan àgil
Traientsuc a l’entornmuntat… • Executarl’aplicaciómaven en un Tomcat propi, nomésambMaven • MvnTomcat:run • Enviar l’aplicació a un Tomcatremotutilitzant el Tomcat Manager • Primer configurem el pom.xml • Mvntomcat:deploy –Pdev • Mvntomcat:deploy -Pprod
Traientméssuca l’entornmuntat… • Crear una versió: canviar el pom.xml, pujar la versió al SVN i crear un tag • Mvnrelease:prepare • Mvnrelease:perform • Fer un web amb la informacióbàsica del projecte: javadocs, anàlisis del codi… • Mvnsite:site
Integraciócontínua • Quanalgú puja codi al subversion… • Baixa el codi del repositori • Compila (ambMaven no cal Eclipse!) • Passaelstestos • Si algo falla, envia un mail • A les nits (nightlybuild) • Baixem el que hi ha al repositori • Construimel projecte i el deixempúblic • Generem informes
Quèméspodriemfer • Mantenir un ranking de les persones que han pujatméscodi • Mantenir un ranking de qui ha fet petar mésvegades la compilació • Publicar automàticamentl’aplicació • Executartestosméscomplicats • Pujar l’aplicació a un servidor de prova • Passar un test de càrrega
Conclusions • Mavenensajuda a organitzar el nostreprojecte i a que poguem construir-lo desde linia de comandes • Eclipse enspermetfacilmenttreballarambMaven, no hem de triar un o altre • Des d’eclipsepodemgestionar el nostrecodi a Subversion • … si hotenimtot, podemtenirmajordom!