SlideShare a Scribd company logo
1 of 103
Herramientas para el
desarrollo y gestión de
proyectos Java
Óliver Centeno Álvarez
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
2
Objetivos
 Conocer las herramientas más comunes y
demandadas que permitan la gestión de los
proyectos Java en sus distintas fases
 Desarrollo
 Pruebas
 Detección rápida y eficiente de errores
 Implantación
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
3
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
4
Estructuración de Contenidos
I. Eclipse (3 horas)
II. Ant (3 horas)
III. Maven (3 horas)
IV. Sistemas de Control de Versiones (6 horas)
V. Sistemas de Gestión de Incidencias (3 horas)
VI. Sistemas de Pruebas (3 horas)
VII. Otros Plugins de Eclipse (3 horas)
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
5
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
6
I. Eclipse
1. Entorno de desarrollo
2. Creación y Refactorización de código
3. Depuración
4. Gestión de Librerías
5. Servidores Web y J2EE
6. Acceso a BBDD
7. Extendiendo las capacidades de Eclipse
Octubre 2009 1. Eclipse 7
1. Entorno de Desarrollo
Octubre 2009 1. Eclipse 8
2. Creación y Refactorización de código
Octubre 2009 1. Eclipse 9
3. Depuración
Octubre 2009 1. Eclipse 10
4. Gestión de Librerías
 Librerías Eclipse
 Window>Preferences>Java>Build Path
 Librerías de proyecto
 Project>Properties>Java Build Path
 Pluggins
 ECLIPSE_HOMEpluggins
 Help>Software Updates>Find & Install
Octubre 2009 1. Eclipse 11
5. Servidores Web y J2EE
 Tomcat pluggin
 http://www.eclipsetotale.com/tomcatPlugin.html
 Descargar y descomprimir en ECLIPSEpluggins
 Nuevo menú Tomcat y botones de acción
 Configurar versión y directorio
 Arrancar y detener Tomcat
 Crear proyectos Java>Tomcat
Octubre 2009 1. Eclipse 12
6. Acceso a BBDD
 Pluggin SQLExplorer
 http://eclipsesql.sourceforge.net/
 Soporte para:
 MySQL (com.mysql.jdbc.Driver, mysql-connector-java-3.1.10-bin.jar)
 URL:: jdbc:mysql://<server>:<port>/<database>
 DB2 (COM.ibm.db2.jdbc.app.DB2Driver, db2java.zip)
 URL:: jdbc:db2:<database>
 Sybase (com.sybase.jdbc2.jdbc.SybDriver, jconn2.jar)
 URL: jdbc:sybase:Tds:<host>:<port>/<database>
 Oracle (oracle.jdbc.driver.OracleDriver, classes12.zip)
 URL: jdbc:oracle:thin:@ <host>:<port>:<sid>
 SQLServer (com.microsoft.jdbc.sqlserver.SQLServerDriver,
mssqlserver.jar, msbase.jar, msutil.jar)
 URL: jdbc:microsoft:sqlserver://localhost:1433
 PostgreSQL (org.postgresql.Driver, postgresql.jar)
 URL: jdbc:postgresql://<server>:<port>/<database>
Octubre 2009 1. Eclipse 13
7. Extendiendo las capacidades de Eclipse
 http://www.eclipse-
plugins.info/eclipse/index.jsp
 Contiene numerosos pluggins para Eclipse
 Posibilidades:
 Copiar y descomprimir en ECLIPSEpluggins
 Utilizar Help>Software Updates>Find & Install
(requiere un repositorio del que descargar)
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
14
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
15
II. Ant
1. Proyectos Ant
2. Configuración de tareas
3. Ejecución de proyectos Ant
4. Despliegue de aplicaciones con Ant
Octubre 2009 2. Ant 16
1. Proyectos Ant
 ¿Qué es Apache Ant?
 Herramienta de compilación hecha con (extiende) Java
 Configurada mediante ficheros XML
 No depende del SO (multiplataforma)
 ¿Dónde se obtiene?
 http://ant.apache.org/
 ¿Cómo se instala?
 Descomprimir el fichero descargado
 Añadir las variables JAVA_HOME y ANT_HOME
 Añadir JAVA_HOMEbin y ANT_HOMEbin al PATH
 Ejecutar ant -diagnostics
Octubre 2009 2. Ant 17
1. Proyectos Ant
 ¿Qué es un proyecto Ant?
 Fichero de construcción build.xml
<project name="test" default="compile" basedir=".">
 Contiene tareas a realizar (targets)
<target name="prepare">
<mkdir dir="${build.dir}"/>
</target>
 Y dependencias entre las tareas
<target name="compile" depends="prepare">
 Se invocan las tareas mediante ant <tarea>
 Admite propiedades de configuración
<property name="build.dir" value="clases"/>
Octubre 2009 2. Ant 18
1. Proyectos Ant
 ¿Qué estructura tiene un proyecto Ant?
 Dentro del directorio de proyecto
 Fichero build.xml
 Directorio /src para código fuente
 Directorio /build para ficheros de salida compilados
 Directorio /lib para librería y otras dependencias
 En el fichero build.xml
 Un único elemento raíz <project>
 Una sección de definición de propiedades <property>
 Un conjunto de objetivos ejecutables <target>
 Se referencia a una propiedad con ${prop}
Octubre 2009 2. Ant 19
2. Configuración de Tareas
 Target: Secuencia de tareas o acciones
<target>
<tarea1/>
<tarea2/>
<tarea3/>
</target>
 Atributos:
 name: (requerido) Permite referenciar esta tarea
 depends: Indica una lista de targets de los que depende
 if: Condiciona la ejecución a la existencia de una propiedad
 unless: Permite la ejecución a menos que exista la propiedad
 description: Descripción textual de la tarea (-projecthelp)
Octubre 2009 2. Ant 20
2. Configuración de Tareas
 Tareas habituales dentro de un target:
 http://ant.apache.org/manual/CoreTasks/
 <delete>
 <mkdir>
 <javac>
 <jar>
 <copy>
 <java>
 <fileset>
 Filtro que permite indicar patrones de fichero
 Admite comodines: ?, *, **
 Debe especificarse un directorio base (dir)
 <include name=“patrón”> y <exclude name=“patrón”>
Octubre 2009 2. Ant 21
3. Ejecución de proyectos Ant
 Desde el directorio del proyecto
 ant [target] lanza el target descrito en build.xml
 Desde otro directorio
 ant –find busca build.xml hacia arriba
 Ejecutar otro fichero de construcción
 ant –buildfile otro_build.xml
 Parametrizar propiedades
 ant –D<porpiedad>=valor
 Ejecutar desde Java
 java -Dant.home=<directorio ant_home>
org.apache.tools.ant.Main [target]
Octubre 2009 2. Ant 22
3. Ejecución de proyectos Ant
 Ejecución condicional
 if/unless
<condition property="existe">
<available file="${build.dir}" type="dir" />
</condition>
<antcall target="then"/>
<target name="then" unless="existe">
<target name="else" if="existe" >
 depends
<target name="A"/>
<target name="B" depends="A"/>
<target name="C" depends="B"/>
<target name="D" depends="C,B,A"/>
Octubre 2009 2. Ant 23
4. Despliegue de aplicaciones
 Habitualmente se indican targets de preparación,
compilación, despliegue y ejecución
 Tareas de empaquetamiento
 <jar destfile="${app.name}.jar" >
 <war destfile="f.war" webxml="web.xml" >
 <cab cabfile="${dist}/manual.cab"
basedir="htdocs/manual"
includes="api/**/*.html"
excludes="**/todo.html" verbose="yes" />
 <zip>
Octubre 2009 2. Ant 24
4. Despliegue de aplicaciones
 Filtros sobre directorios
 <patternset> indicar directorios/ficheros que cumplen el
patrón
 <include> y <exclude> para directorios
 <includesfile> y <excludesfile> para ficheros
 <fileset> es un <patternset> implícito
 <zipfileset> equivale a <fileset> en tareas de empaquetamiento
 Selectores
 Contenedores <and>, <or>, <not> para combinar patrones
 CORE: <contains>, <date>, <size>, <type>, …
 <filelist> lista explícita de ficheros separada por
comas/espacios (atributo dir)
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
25
4. Despliegue de aplicaciones
BUILD
<war destfile="myapp.war" webxml="src/metadata/myapp.xml">
<fileset dir="src/html/myapp"/>
<fileset dir="src/jsp/myapp"/>
<lib dir="thirdparty/libs">
<exclude name="jdbc1.jar"/>
</lib>
<classes dir="build/main"/>
<zipfileset prefix="images“
dir="src/graphics/images/gifs" />
</war>
GENERADO
WEB-INF/web.xml
WEB-INF/lib/jdbc2.jar
WEB-INF/classes/com/myco/myapp/Servlet.class
META-INF/MANIFEST.MF
index.html
front.jsp
images/small/logo.gif
images/large/logo.gif
FICHEROS
thirdparty/libs/jdbc1.jar
thirdparty/libs/jdbc2.jar
build/main/com/myco/myapp/Servlet.class
src/metadata/myapp.xml
src/html/myapp/index.html
src/jsp/myapp/front.jsp
src/graphics/images/gifs/small/logo.gif
src/graphics/images/gifs/large/logo.gif
Octubre 2009 2. Ant 26
4. Despliegue de aplicaciones
 Filtros (tareas <copy> y <move>)
 <mapper> permite mapear ficheros FROM a ficheros TO
 type=flatten elimina directorios y paquetes
 type=merge sólo considera el atributo TO
 type=glob admite asteriscos en el FROM y en el TO
 type=regexp admite expresiones regulares
 type=package transforma directorios FROM en paquetes TO
 type=unpackage hace lo contrario
 <filterset> permite indicar grupos de filtros para tokens
 Admite begintoken y endtoken (@ por defecto)
 <filter token="CLASE" value="${Clase}" />
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
27
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
28
III. Maven
1. Goals Maven
2. Gestión de Dependencias
3. Arquetipos
4. Pluggins
5. Maven vs. Ant
Octubre 2009 3. MAVEN 29
1. Goals Maven
 ¿Qué es Maven?
 Un framework de gestión de proyectos, que proporciona un modelo
estándar de gestión y descripción de proyectos
 Sistema de estándares + repositorio + SW para manejar y describir
proyectos
 Estándares
 Una estructura estándar para los directorios
 Una salida principal para cada proyecto
 Una convención de nombres estándar
 Reutilización
 Ejecución declarativa
 Organización coherente de dependencias
Octubre 2009 3. MAVEN 30
1. Goals Maven
 Ciclo de Vida
 Validar
 Inicializar
 Generar fuentes
 Procesar fuentes
 Generar recursos
 Compilar
 Estructura de carpetas
 src/main/java: Código fuente
 src/main/resources: Otros recursos
 src/test/java: Código fuente de pruebas.
 src/test/resources: Otros recursos para las pruebas
 Toda la información almacenada en pom.xml
Octubre 2009 3. MAVEN 31
1. Goals Maven
 Instalación
 Descargar mvn y crear la variable M2_HOME
 Añadir M2_HOMEbin a PATH y comprobar mvn -
version
 Crear la variable M2_REPO apuntando a .m2/repository
 settings.xml permite configurar las conexiones de Maven
 Goals
 Objetivos que permiten realizar una tarea
 mvn <goal>
Octubre 2009 3. MAVEN 32
1. Goals Maven
 Generación de proyectos
 mvn archetype:create -DgroupId=com.empresa.solucion
-DartifactId=mi-aplicacion
 mvn eclipse:eclipse genera un proyecto de Eclipse
 Compilación y ejecución
 mvn compile compila el proyecto
 mvn test lanza las prueba de src/test
 mvn test-compile sólo compilar las pruebas
 Empaquetado e instalación
 mvn package empaqueta el proyecto
 mvn install instala en repositorio local
 Otros comandos
 mvn clean, mvn resolve, mvn site, mvn deploy, …
Octubre 2009 3. MAVEN 33
2. Gestión de Dependencias
 Fichero POM (Project Object Model)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/mavenv4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ejemplos</groupId>
<artifactId>EjemploMaven1</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>EjemploMaven1</name>
<url>http://maven.apache.org</url>
Octubre 2009 3. MAVEN 34
2. Gestión de Dependencias
 Fichero POM (Project Object Model)
 Las dependencias no acompañan al código
 Se puede indicar un ámbito de aplicación (scope)
 compile, test, provided, run-time, system
 Elementos de descripción
 groupId: Nombre de organización, suele coincidir con el
paquete
 artifacId: Identificador del componente que se esta
desarrollando
 version: Versión actual del desarrollo
 scope: Ámbito en el que se usa (compile, test, provided, run-
time, system)
 type: Empaquetamiento de la dependencia
Octubre 2009 3. MAVEN 35
2. Gestión de Dependencias
 Fichero POM (Project Object Model)
 Indica la estructura y dependencias de un proyecto
 Maven resuelve automáticamente dependencias transitivas
y descarga de repositorio
<project ...>
...
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Octubre 2009 3. MAVEN 36
2. Gestión de Dependencias
 Las dependencias se heredan entre módulos
 Existe un super-pom del que heredan todos
 mvn help:effective-pom
 Gestor de dependencias
 Permite indicar una versión preferida para las dependencias
 No afecta al grafo de dependencias del proyecto
<dependencyManagement> <dependencies>
<dependency>
<groupId>org.apache.maven.proficio</groupId>
<artifactId>proficio-model</artifactId>
<version>${project.version}</version>
</dependency>
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
37
2. Gestión de Dependencias
 Exclusión de Dependencias
 Supongamos que tenemos estas dependencias
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-el</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>1.1.5</version>
</dependency>
</dependencies>
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
38
2. Gestión de Dependencias
 Exclusión de Dependencias
 Si ahora cada uno depende a su vez de otra… (en su propio pom.xml)
<artifactId>commons-el</artifactId>
<dependencies> <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.3</version>
</dependency> </dependencies>
<artifactId>myfaces-api</artifactId>
<dependencies> <dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
</dependency> </dependencies>
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
39
2. Gestión de Dependencias
 Exclusión de Dependencias
 El paquete generado contendrá ambas versiones
 Para evitarlo se pueden excluir dependencias
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-el</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Octubre 2009 3. MAVEN 40
3. Arquetipos
 Los arquetipos permiten crear una estructura de proyecto sin
tener que escribir el pom.xml
 Listado de Arquetipos
 http://docs.codehaus.org/display/MAVENUSER/Archetypes+List
 mvn archetype:generate
 Ejemplos:
 appfuse-basic-jsf
 appfuse-basic-struts
 maven-archetype-j2ee-simple
 maven-archetype-mojo
 maven-archetype-site
 …
Octubre 2009 3. MAVEN 41
4. Pluggins
 Permiten extender la funcionalidad de Maven
 Se añaden al pom.xml
 Se puede indicar una configuración personalizada
<configuration>
 Se puede restringir la ejecución a alguna fase del
ciclo de vida
<executions>
<execution>
<phase>integration-test</phase>
 Se pueden crear pluggins personalizados mediante
MOJO
Octubre 2009 3. MAVEN 42
4. Pluggins
 Reporting (mvn site)
<reporting> <plugins> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin> </plugins> </reporting>
 Build
<build> <plugins> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0</version>
<configuration>
<source>1.5</source><target>1.5</target>
</configuration>
</plugin> </plugins> </build>
Octubre 2009 3. MAVEN 43
4. Pluggins
 SCM
 http://maven.apache.org/scm/plugins/
 Permite la conexión con sistemas de control de versiones
<connection>
scm:svn:http://localhost/repositorios/miRepo
</connection>
 Eclipse
 http://m2eclipse.codehaus.org/update/site.xml
 http://code.google.com/p/q4e/wiki/Installation
 mvn eclipse:eclipse
 Requiere la variable M2_REPO
 Permite lanzar tareas Maven como herramienta externa
Octubre 2009 3. MAVEN 44
5. Maven vs. Ant
 Incluir tareas Ant en Maven
 Plugin maven-antrun-plugin
 Permite especificar tareas ant a ejecutar
 Ejemplo:
<rmic base="${target.classes.dir}"
classname="org.springframework.remoting.rmi.
RmiInvocationWrapper"/>
<rmic base="${target.classes.dir}" iiop="true"
classname="org.springframework.remoting.rmi.
RmiInvocationWrapper">
<classpath refid="all-libs"/>
</rmic>
Octubre 2009 3. MAVEN 45
5. Maven vs. Ant
 Ejemplo:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>process-classes</phase>
<configuration>
<tasks>
<echo>Running rmic</echo>
<!– TAREAS ANT A EJECUTAR -->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
46
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
47
IV.Sistemas de Control de Versiones
1. Repositorios de Código
2. CVS
3. Subversion
4. Subversive
Octubre 2009 4. Sistemas de Control de Versiones 48
1. Repositorios de Código
 ¿Qué es un repositorio?
 Sitio centralizado donde se almacena y mantiene
información digital
 Repositorio de código almacena y mantiene código fuente
 ¿Qué es una versión/revisión?
 Estado en que se encuentra un producto en un momento
de su desarrollo
 ¿Qué es un sistema de control de versiones?
 Aplicación que gestiona el estado de un proyecto en base
a un repositorio que almacena el histórico de versiones
Octubre 2009 4. Sistemas de Control de Versiones 49
1. Repositorios de Código
 Un sistema de control de versiones debe
proporcionar:
 Mecanismo de almacenaje de los elementos a gestionar
(archivos, imágenes, documentación, ...)
 Posibilidad de realizar cambios sobre los elementos
almacenados (modificaciones parciales, añadir, borrar,
renombrar o mover elementos)
 Registro histórico de las acciones realizadas con cada
elemento o conjunto de elementos (pudiendo volver a un
estado anterior del producto)
Octubre 2009 4. Sistemas de Control de Versiones 50
1. Repositorios de Código
 Conceptos
 Módulo: Estructura de directorios de un proyecto
 Etiquetar: Dar a una versión de cada módulo un nombre común
 Línea base: Versión aprobada a partir de la que se realizan los
siguientes cambios
 Rama: Cada una de las versiones en desarrollo obtenida a partir de
una línea base
 Check-in: Envío de una copia modificada a repositorio
 Check-out: Obtención de una copia en local
 Conflicto: Cada vez que se realizan cambios, hay que resolverlos
 Integración: Unión de uno o varios conjuntos de cambios sobre una
versión unificada
Octubre 2009 4. Sistemas de Control de Versiones 51
2. CVS
 Concurrent Versions System
 Servidor CVSNT para Windows (http://www.march-
hare.com/cvspro/es.asp)
 CVSNT Control Panel
1. Detener los servicios (Pestaña About)
2. Añadir un repositorio (Pestaña Repository Configuration)
3. Opcionalmente configurar el servidor (Server Settings)
4. Aplicar los cambios y reiniciar los servicios
5. Crear una variable CVSROOT=:sspi:<host>:/<repositorio>
6. Añadir usuario(s) al sistema (Windows)
7. Crear un password para cada usuario (cvs passwd –a <usuario>)
Octubre 2009 4. Sistemas de Control de Versiones 52
2. CVS
 Cliente CVS
 Habitualmente se admite check-out anónimo
 Y se exige un usuario para check-in
 cvs <orden> [opciones]
 Órdenes básicas
 import crear un módulo nuevo con el directorio actual
 co check-out inicial de un módulo
 commit check-in de los cambios realizados
 update actualización de los cambios de otros usuarios
 diff muestra diferencias entre revisiones
 add añade ficheros al módulo (-kb para binarios)
 remove elimina ficheros del módulo
Octubre 2009 4. Sistemas de Control de Versiones 53
2. CVS
 Resolución de conflictos
 Al hacer update o commit
 CVS se quejará si hay conflictos que no pueda resolver
 El fichero en conflicto aparecerá marcado para su edición
<<<<<<< Fichero
texto-versión-1
=======
texto-versión-2
>>>>>>> revisión
 Resolver el conflicto
 Repetir el update o commit
Octubre 2009 4. Sistemas de Control de Versiones 54
2. CVS
 Desde Eclipse
1. Configurar la perspectiva CVS
2. Botón derecho>Team>Share Project
3. ¡¡OJO!! Añadir .project y .classpath a la lista de
ignorados
4. Etiquetar la revisión (Team>Tag as Version)
5. Ya aparecerán las opciones de trabajo
 Commit, Update, Branch, Merge, Tag as Version
6. La resolución de conflictos es gráfica
Octubre 2009 4. Sistemas de Control de Versiones 55
3. Subversion
 CVS es un sistema de control de versiones antiguo
 Subversion es la evolución natural de CVS
 Hereda comandos (svn co, svn add,…)
 Y añade nuevos (svn cp, svn status,…)
 Conceptos
 Trunk Tronco, se refiere a una línea base
 Branch Rama derivada del tronco
 Tag Etiqueta
Octubre 2009 4. Sistemas de Control de Versiones 56
3. Subversion
 http://svn1clicksetup.tigris.org/
 Instala SVN en “1 paso”
 Instala TortoiseSVN como cliente Windows
 Consideraciones
 Crear un usuario para SVN
 Opcionalmente crear un proyecto inicial
 Genera un servicio de control SVNService
 Podemos omitir TortoiseSVN
 Se accede como svn://localhost
 Se admiten referencias http://, file:///, etc.
Octubre 2009 4. Sistemas de Control de Versiones 57
3. Subversion
 Comandos
 svn add Añade elementos a repositorio
 svn co Obtiene una copia local
 svn cleanup Limpia una copia de trabajo local
 svn commit Actualiza cambios en el repositorio
 svn import Commit recursivo de archivos no versionados
 svn export Obtiene la estructura de directorios limpia
 svn mkdir Crea un directorio en el repositorio
 svn cp Crea una nueva rama
 svn merge Fusiona dos ramas
 svn resolved Marca los conflictos como resueltos
 svn revert Deshace los cambios de una copia local
 svn update Actualiza cambios del repositorio en local
Octubre 2009 4. Sistemas de Control de Versiones 58
3. Subversion
 svn help
 Muestra todos los comandos disponibles
 svn status
 Muestra el estado de una copia de trabajo
 Estados de un fichero SVN
 A Fichero añadido
 D Fichero eliminado
 M Fichero modificado
 ? Fichero local nuevo (no existe en repositorio)
 ! Fichero remoto distinto de la copia local
 U Fichero actualizado desde repositorio
 G Fichero guardado en repositorio
 C Fichero con conflictos
Octubre 2009 4. Sistemas de Control de Versiones 59
3. Subversion
 Propiedades de un fichero/directorio
 svn:read-only Fichero de solo lectura
 svn:executable Fichero ejecutable
 svn:mime-type Indica el tipo mime del fichero
 svn:ignore Fichero ignorado
 Operaciones con propiedades
 svn propget <propiedad> <fichero>
 svn propset <propiedad> <valor> <fichero>
 svn propedit <propiedad> <fichero>
Octubre 2009 4. Sistemas de Control de Versiones 60
3. Subversion
 Herramientas de administración
 svnlook
 Analiza los cambios en un repositorio
 svnadmin
 Permite crear repositorios, mostrar revisiones,
cambiar el log de revisiones, copias de seguridad, …
 shell consola de navegación por el repositorio
 dump copia de seguridad a salida estándar
 load recupera una copia de seguridad
 setlog modifica el log de una revisión
Octubre 2009 4. Sistemas de Control de Versiones 61
4. Subversive
 Proyecto para la integración de Subversion para Eclipse
 http://www.eclipse.org/subversive/
 Permite trabajar con repositorios SVN de modo similar al que
se trabaja con CVS
 Características
 Exploración de repositorio remoto
 Compartición de proyectos y check-out
 Sincronización de proyectos para cambios incomming/outgoing
 Commit, update y revert
 Histórico de cambios
 Resolución de conflictos por mezcla (merge)
Octubre 2009 4. Sistemas de Control de Versiones 62
4. Subversive
 Perspectiva SVN Repository Exploring
 Añadir svn://localhost
 Compartir el proyecto con este repositorio
 Botón derecho > Team > Share project
 Opciones
 De acceso: Synchronize, Commit, Update, Revert
 De estructura: Tag, Branch, Merge, Switch
 Otras: Show properties, Set property, Copy to, Export
 También se puede crear un proyecto como check-out
de un repositorio
Octubre 2009 4. Sistemas de Control de Versiones 63
4. Subversive
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
64
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
65
V. Gestión de Incidencias
1. Propósito de un SGI
2. Bugzilla
3. Instalación y Administración
4. Creación de Usuarios
5. Registro de incidencias (Bugs)
Octubre 2009 5. Gestión de Incidencias 66
1. Propósito de un SGI
 Toda aplicación en explotación puede generar
incidencias
 El cliente reporta estas incidencias a su contacto
(comercial, jefe de proyecto, gerente,…)
 El contacto deriva la incidencia al equipo de
desarrollo
 El equipo la resuelve y se lo comunica al contacto
 El contacto le devuelve al cliente una nueva versión
 Un SGI pretende llevar un control más preciso de
este proceso
Octubre 2009 5. Gestión de Incidencias 67
1. Propósito de un SGI
 “Un SGI es una aplicación informática
diseñada para ayudar a asegurar la calidad de
software y asistir a los programadores y otras
personas involucradas en el desarrollo y uso
de sistemas informáticos en el seguimiento de
los defectos de software”
 Componentes
 Base de Datos
 Aplicación de acceso (escritorio o Web)
Octubre 2009 5. Gestión de Incidencias 68
1. Propósito de un SGI
 Errores
 Bloqueante: impide que se pueda seguir
desarrollando/probando
 Crítico: caída de la aplicación, pérdida de datos, …
 Mayor: pérdida importante de funcionalidad, datos de
salida incorrectos, o dificultades que impiden el uso del
programa
 Normal: una parte del componente no es funcional
 Menor: un problema al cual se le puede dar la vuelta
 Trivial: un problema estético
 Mejora: solicitud de una nueva característica o
funcionalidad
Octubre 2009 5. Gestión de Incidencias 69
2. Bugzilla
 Bugzilla es un conjunto de cgi que nos permiten
mantener una base de datos de incidencias de un
proyecto desde un navegador Web
 Requiere un servidor Web, una base de datos y Perl
 Permite el alta y baja de incidencias sabiendo
 Versión a la que afecta
 Encargado de resolverla
 Estado de la incidencia (abierta, rechazada, cerrada, …)
 Histórico de cambios realizados
Octubre 2009 5. Gestión de Incidencias 70
3. Instalación y Administración
 Instalación en Windows
 Requiere MySQL, Apache y ActivePerl
 Instalable sobre SQLServer e IIS (Bugzilla??)
 http://www.bugzilla.org/download/
 http://dev.mysql.com/downloads/mysql/5.1.html
 http://www.activestate.com/activeperl/downloads/
 http://httpd.apache.org/download.cgi
Octubre 2009 5. Gestión de Incidencias 71
3. Instalación y Administración
 Instalación en Windows
1. Descargar las aplicaciones indicadas
2. Descomprimir Bugzilla
3. Instalar MySQL
 Crear una instancia “bugs” y un usuario “bugs” con permisos
totales sobre ella (BUGZILLA_HOMElocalconfig)
4. Instalar ActivePerl
 perl checksetup.pl (desde el directorio de bugzilla)
 Resolver las distintas dependencias
 Montar la BD (ppm install DBD-mysql)
5. Instalar Apache
 Configurar permisos, httpd.conf y CGI
Octubre 2009 5. Gestión de Incidencias 72
3. Instalación y Administración
Octubre 2009 5. Gestión de Incidencias 73
4. Creación de Usuarios
Octubre 2009 5. Gestión de Incidencias 74
5. Registro de incidencias (Bugs)
Octubre 2009 5. Gestión de Incidencias 75
5. Registro de incidencias (Bugs)
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
76
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
77
VI.Sistemas de Pruebas
1. Clases de Test
2. Ciclo de Vida de un Test
3. Aserciones
4. JUnit
5. DbUnit
6. HttpUnit
7. Ejecución de Pruebas
Octubre 2009 6. Sistemas de Pruebas 78
1. Clases de Test
 JUnit está diseñado bajo los patrones de diseño Command y
el patrón Composite
 Un TestCase es un objeto Command y una clase de Test es
una clase que extiende TestCase y contiene métodos de testeo
 Antes de Java 5
 Los métodos debían llamarse testXXX()
 Se admitían los métodos setUp() y tearDown() para inicializar y
liberar objetos (pre-post condiciones)
 Después de Java 5
 Se utilizan anotaciones @Before, @Test, @After
 Utilizables a nivel de clase o a nivel de método (test)
 No importan los nombres de los métodos ni hay que heredar TestCase
Octubre 2009 6. Sistemas de Pruebas 79
2. Ciclo de Vida de un Test
 Todos los programas tienen errores
 Un test NO se realiza para comprobar que un sistema no tiene
errores, NI para demostrar que funciona
 Un test se realiza para encontrar fallos (decisión fuerte)
 Se pueden probar las distintas fases de desarrollo
 Modelo en V
Octubre 2009 6. Sistemas de Pruebas 80
3. Aserciones
 Condiciones que deben cumplirse para validar un test
 En caso de fallo lanza un AssertionFailedError
 Se especifican mediante la clase org.junit.Assert
 assertTrue(“mensaje”, condición)
 assertFalse(“mensaje”, condición)
 assertSame(objeto, objeto)
 assertNotSame(objeto, objeto)
 assertNull(objeto)
 assertNotNull(objeto)
 assertEquals(variable, variable)
 JUnit3 hereda los métodos (extends TestCase)
 JUnit4 requiere importarlos (import static)
Octubre 2009 6. Sistemas de Pruebas 81
4. JUnit
 Framework para pruebas unitarias
 Pruebas de funcionamiento de una clase
 Paquetes junit.* (JUnit 3) y org.junit.* (JUnit 4)
 Disponible en Eclipse (JUnit 3 y 4)
 Proyectos de prueba (New > Project > Examples)
 Ejecutable como JUnit (junit.samples.AllTests)
 Ejecutable como Swing o AWT (TestRunner)
 JUnit 4 admite timeout, excepciones esperadas, tests
ignorables, auto-documentación, …
Octubre 2009 6. Sistemas de Pruebas 82
4. JUnit
 Paquetes de pruebas (Suites)
 Permite ejecutar pruebas de varias clases en
conjunto desde una lanzadora
 En JUnit 3 se añaden clases a TestSuite
 suite.addTest(ClaseTest.suite());
 suite.addTestSuite(ClaseTest.class);
 En JUnit 4 se usan anotaciones de clase
 @RunWith(Suite.class)
 @SuiteClasses({C1Test.class, C2Test.class})
Octubre 2009 6. Sistemas de Pruebas 83
5. DbUnit
 Herramienta para simplificar las pruebas unitarias de
operaciones sobre base de datos
 http://www.dbunit.org/
 Carga los datos de test de XML
 El framework DbUnit extiende JUnit 3
 Contiene métodos para distintas comparaciones entre datos
(desde texto plano, consultas, tablas, …)
 En lugar de extender TestCase se extiende DatabaseTestCase
 Requiere implementar dos métodos
 protected IDatabaseConnection getConnection() throws Exception
 protected IDataSet getDataSet() throws Exception
Octubre 2009 6. Sistemas de Pruebas 84
5. DbUnit
 Ciclo de vida
1. Eliminar datos de anteriores ejecuciones del test de la BD
2. Cargar datos nuevos desde el sistema de archivos
3. Ejecutar pruebas considerando aserciones
 Nótese: no se realizan tareas de restauración
 Permite cargar datos para un único test
 DatabaseTestCase
 setUp() borra y reinserta los datos de getDataSet()
 tearDown() no realiza ninguna acción
Octubre 2009 6. Sistemas de Pruebas 85
5. DbUnit
 Realización de pruebas
 org.dbunit.Assertion permite establecer aserciones entre
DataSets
 No importa el origen de datos
 FlatXmlDataSet
 QueryDataSet
 XlsDataSet
 CsvDataSet
 IDataSet
 También permite exportar datos a distintos destinos
Octubre 2009 6. Sistemas de Pruebas 86
6. HttpUnit
 Framework para probar sitios Web basado en JUnit
 http://www.httpunit.org/
 com.meterware.WebConversation simula un
navegador accediendo al servidor
 WebRequest y WebResponse auxiliares para indicar
la URL y obtener la respuesta
 La respuesta será HTML
 getText() la devuelve como texto
 getDOM() la devuelve como objeto XML DOM
Octubre 2009 6. Sistemas de Pruebas 87
6. HttpUnit
 Enlaces
 WebLink link = response.getLinkWith("texto");
 link.click();
 Se recarga la respuesta con el método getCurrentPage() de
WebConversation
 También existe getLinkWithImageText() que busca en el texto ALT
de una imagen
 Tablas
 WebTable table = resp.getTables()[0];
 Método asText() la devuelve como String[][]
 Marcos
 getFrameContents("marco") devuelve un WebResponse
Octubre 2009 6. Sistemas de Pruebas 88
6. HttpUnit
 Formularios
 WebForm form = resp.getForms()[0];
 form.getParameterValue("parámetro") ;
 getParameterNames() devuelve un String[]
 setParameter("parámetro", "valor");
 toggleCheckbox("parámetro"); para checkbox
 submit(); envía los datos
 reset(); resetea a los valores por defecto
Octubre 2009 6. Sistemas de Pruebas 89
7. Ejecución de Pruebas
 Desde Eclipse
 Run as JUnit
 Desde consola
 java org.junit.runner.JUnitCore [Clase de Test]
 Desde Swing
 java junit.swingui.TestRunner
 Desde AWT
 java junit.awtui.TestRunner
 Desde Ant
 <junit><test name="Clase de Test" /></junit>
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
90
Contenidos
I. Eclipse
II. Ant
III. Maven
IV. Sistemas de Control de Versiones
V. Sistemas de Gestión de Incidencias
VI. Sistemas de Pruebas
VII. Otros Plugins de Eclipse
Octubre 2009 Herramientas para el desarrollo y gestión de
proyectos Java
91
VII.Otros Plugins de Eclipse
1. Selenium IDE
2. JMeter
3. I18N
4. Hibernate Tools
5. Spring IDE
Octubre 2009 7. Otros Pluggins de Eclipse 92
1. Selenium IDE
 Paquete de herramientas para automatizar pruebas de
aplicaciones Web en distintas plataformas
 http://seleniumhq.org/
 NO es pluggin de Eclipse sino de Firefox
 CubicTest SÍ es un pluggin para Eclipse
 http://cubictest.seleniumhq.org/
 Requiere Eclipse 3.3 Ganymede
 Requiere pluggin Eclipse Graphical Editing
Framework (GEF)
Octubre 2009 7. Otros Pluggins de Eclipse 93
1. Selenium IDE
Octubre 2009 7. Otros Pluggins de Eclipse 94
1. Selenium IDE
Octubre 2009 7. Otros Pluggins de Eclipse 95
1. Selenium IDE
Octubre 2009 7. Otros Pluggins de Eclipse 96
2. JMeter
 Herramienta para realizar pruebas de stress sobre un
servidor Web
 http://jakarta.apache.org/jmeter/
 Se parte de un plan de pruebas (test plan) que deberá
contener un grupo de hilos (thread group) para
lanzar llamadas concurrentes
 Se puede indicar
 Nombre del grupo
 Número de hilos
 Tiempo para generar los hilos
 Número de veces que se lanza una petición al servidor
Octubre 2009 7. Otros Pluggins de Eclipse 97
2. JMeter
 Dado un plan de pruebas y un grupo de hilos se
indicar la URL del servidor a probar
(Add>Sampler>HTTPRequest)
 Indicar
 Máquina (nombre o IP)
 Puerto (80)
 Protocolo (http)
 Método de petición (GET/POST)
 Directorio Web a consultar
 Posibles parámetros para la petición
 …
Octubre 2009 7. Otros Pluggins de Eclipse 98
2. JMeter
 Para mostrar los resultados se debe añadir un
Listener al plan de pruebas
 Árbol de resultados (Results Tree)
 Para cada petición muestra la respuesta HTTP, la petición
y los datos HTML devueltos
 Tiene un renderizador de HTML y XML
 Informe agregado (Aggregate Report)
 Muestra un resumen de los resultados
 Gráfico de resultados (Graph results)
 Muestra un gráfico de rendimiento
 …
Octubre 2009 7. Otros Pluggins de Eclipse 99
3. I18N
 Proceso de internacionalización y localización
 Internacionalización
 Diseñar software adaptable a distintos idiomas y regiones
sin reprogramar
 Localización
 Adaptar software internacionalizado a un idioma concreto
con componentes específicos y ficheros de localización
(es-es, en-GB, en-US, …)
 Se utilizan tokens en lugar de texto al desarrollar
 Se sustituyen los token de ficheros de localización
Octubre 2009 7. Otros Pluggins de Eclipse 100
3. I18N
 Ejemplo Hola Mundo
1. Source>Externalize Strings
2. Determinar los textos a externalizar o ignorar
3. Determinar el fichero .properties asociado
4. Comprobar el gestor de recursos que genera
5. Si no hay ficheros de localización utiliza el
generado
6. Si añadimos copias localizadas utiliza la copia
del idioma instalado (Windows)
Octubre 2009 7. Otros Pluggins de Eclipse 101
4. Hibernate Tools
 Conjunto de herramientas para la persistencia de
objetos en bases de datos relacionales
 https://www.hibernate.org/
 Disponible para Java y .Net
 Define el mapeo tablas-clases en ficheros XML
 Las clases son VO serializables
 La lógica de acceso la implementa hibernate
 Fichero de configuración
 Conexión, usuario, password, …
Octubre 2009 7. Otros Pluggins de Eclipse 102
5. Spring IDE
 Framework para la creación de beans Java a
través de documentos XML
 http://www.springide.org/
 Permite la inyección de dependencias a la
hora de crear estos beans
 Sólo se necesita crear la clase Java (POJO)
 Equivale a un Diagrama de Objetos UML
Muchas Gracias
Óliver Centeno Álvarez

More Related Content

What's hot

Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframework
Vortexbird
 
webutil oracle forms
webutil oracle formswebutil oracle forms
webutil oracle forms
israel
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1
UTN
 

What's hot (20)

Frameworks J2EE
Frameworks J2EEFrameworks J2EE
Frameworks J2EE
 
Breve introducción a Apache Ant
Breve introducción a Apache AntBreve introducción a Apache Ant
Breve introducción a Apache Ant
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframework
 
Webutil
WebutilWebutil
Webutil
 
webutil oracle forms
webutil oracle formswebutil oracle forms
webutil oracle forms
 
Webutil
WebutilWebutil
Webutil
 
9 tecnologías v1.1
9 tecnologías v1.19 tecnologías v1.1
9 tecnologías v1.1
 
Curso Java Avanzado 5 Ejb
Curso Java Avanzado   5 EjbCurso Java Avanzado   5 Ejb
Curso Java Avanzado 5 Ejb
 
Diapositivas Web Util
Diapositivas Web UtilDiapositivas Web Util
Diapositivas Web Util
 
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado   1 IntroduccióN Al Desarrollo WebCurso Java Avanzado   1 IntroduccióN Al Desarrollo Web
Curso Java Avanzado 1 IntroduccióN Al Desarrollo Web
 
Documento Web2Py
Documento Web2PyDocumento Web2Py
Documento Web2Py
 
Introducción a JEE
Introducción a JEEIntroducción a JEE
Introducción a JEE
 
Integración de aplicaciones Java
Integración de aplicaciones JavaIntegración de aplicaciones Java
Integración de aplicaciones Java
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006Curso Java Resumen - Curso 2005-2006
Curso Java Resumen - Curso 2005-2006
 
Asp.net
Asp.netAsp.net
Asp.net
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
Trabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NETTrabajar con bases de datos desde ASP.NET
Trabajar con bases de datos desde ASP.NET
 
JBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server FacesJBossAS: Desarrollo con Java Server Faces
JBossAS: Desarrollo con Java Server Faces
 

Viewers also liked (20)

Java desde cero maven
Java desde cero mavenJava desde cero maven
Java desde cero maven
 
Note - Apache Maven Intro
Note - Apache Maven IntroNote - Apache Maven Intro
Note - Apache Maven Intro
 
Git: control de versiones
Git: control de versionesGit: control de versiones
Git: control de versiones
 
Listas
ListasListas
Listas
 
Presentacion
PresentacionPresentacion
Presentacion
 
Rc094 010d-git 2 - desconocido
Rc094 010d-git 2 - desconocidoRc094 010d-git 2 - desconocido
Rc094 010d-git 2 - desconocido
 
Análsis y requerimientos
Análsis y requerimientosAnálsis y requerimientos
Análsis y requerimientos
 
Taller1
Taller1Taller1
Taller1
 
J unit4
J unit4J unit4
J unit4
 
Modulos
ModulosModulos
Modulos
 
Programación III (Java) - 06 Ventanas
Programación III (Java) - 06 VentanasProgramación III (Java) - 06 Ventanas
Programación III (Java) - 06 Ventanas
 
Java - Tutorial Ventanas
Java - Tutorial VentanasJava - Tutorial Ventanas
Java - Tutorial Ventanas
 
Maven
MavenMaven
Maven
 
Joomla!
Joomla!Joomla!
Joomla!
 
XML Básico
XML BásicoXML Básico
XML Básico
 
Java en Tiempo Real
Java en Tiempo RealJava en Tiempo Real
Java en Tiempo Real
 
Maven for Dummies
Maven for DummiesMaven for Dummies
Maven for Dummies
 
My SQL
My SQLMy SQL
My SQL
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
Microsoft Test Manager 2010
Microsoft Test Manager 2010Microsoft Test Manager 2010
Microsoft Test Manager 2010
 

Similar to Herramientas Java

Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
Marcos Jara
 
Webutil de oracle
Webutil de oracleWebutil de oracle
Webutil de oracle
guestc91f49
 

Similar to Herramientas Java (20)

FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Ant tutorial
Ant tutorialAnt tutorial
Ant tutorial
 
Curso de Struts 2: Unidad Didáctica 01 El Entorno de Desarrollo
Curso de Struts 2: Unidad Didáctica 01 El Entorno de DesarrolloCurso de Struts 2: Unidad Didáctica 01 El Entorno de Desarrollo
Curso de Struts 2: Unidad Didáctica 01 El Entorno de Desarrollo
 
Seguridad en Android
Seguridad en AndroidSeguridad en Android
Seguridad en Android
 
02 instalación
02 instalación02 instalación
02 instalación
 
Proyectos JAVA con maven
Proyectos JAVA con mavenProyectos JAVA con maven
Proyectos JAVA con maven
 
Proyectos java-con-maven
Proyectos java-con-mavenProyectos java-con-maven
Proyectos java-con-maven
 
03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jee03. empaquetado de aplicaciones jee
03. empaquetado de aplicaciones jee
 
02%20 ant
02%20 ant02%20 ant
02%20 ant
 
TUTORIAL
TUTORIALTUTORIAL
TUTORIAL
 
Modulo Jee Practica Pos Fp Une
Modulo Jee Practica  Pos Fp UneModulo Jee Practica  Pos Fp Une
Modulo Jee Practica Pos Fp Une
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
3.android eclipse
3.android   eclipse3.android   eclipse
3.android eclipse
 
Taller integracion jsf spring
Taller integracion jsf springTaller integracion jsf spring
Taller integracion jsf spring
 
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2 JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
JBoss AS Installation -JBoss as jeap - Curso JBoss JB366 Día 2
 
Semana9 Vbr
Semana9 VbrSemana9 Vbr
Semana9 Vbr
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Tomcat yant
Tomcat yantTomcat yant
Tomcat yant
 
Webutil de oracle
Webutil de oracleWebutil de oracle
Webutil de oracle
 

More from Oliver Centeno

Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5
Oliver Centeno
 
Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Sun Java System Web Server 6.1
Sun Java System Web Server 6.1
Oliver Centeno
 

More from Oliver Centeno (16)

Metodologías ágiles
Metodologías ágilesMetodologías ágiles
Metodologías ágiles
 
Métrica v3 y RUP
Métrica v3 y RUPMétrica v3 y RUP
Métrica v3 y RUP
 
ATL
ATLATL
ATL
 
Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5Red Hat Enterprise Linux 5
Red Hat Enterprise Linux 5
 
Sun Java System Web Server 6.1
Sun Java System Web Server 6.1Sun Java System Web Server 6.1
Sun Java System Web Server 6.1
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
Liferay
LiferayLiferay
Liferay
 
TFS 10
TFS 10TFS 10
TFS 10
 
Azure
AzureAzure
Azure
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Enterprise Library 5
Enterprise Library 5Enterprise Library 5
Enterprise Library 5
 
MSS 2010
MSS 2010MSS 2010
MSS 2010
 
PMP, Project Management Professional
PMP, Project Management ProfessionalPMP, Project Management Professional
PMP, Project Management Professional
 
Hibernate
HibernateHibernate
Hibernate
 
OSGi
OSGiOSGi
OSGi
 

Recently uploaded

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 

Recently uploaded (10)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Herramientas Java

  • 1. Herramientas para el desarrollo y gestión de proyectos Java Óliver Centeno Álvarez
  • 2. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 2 Objetivos  Conocer las herramientas más comunes y demandadas que permitan la gestión de los proyectos Java en sus distintas fases  Desarrollo  Pruebas  Detección rápida y eficiente de errores  Implantación
  • 3. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 3 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 4. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 4 Estructuración de Contenidos I. Eclipse (3 horas) II. Ant (3 horas) III. Maven (3 horas) IV. Sistemas de Control de Versiones (6 horas) V. Sistemas de Gestión de Incidencias (3 horas) VI. Sistemas de Pruebas (3 horas) VII. Otros Plugins de Eclipse (3 horas)
  • 5. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 5 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 6. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 6 I. Eclipse 1. Entorno de desarrollo 2. Creación y Refactorización de código 3. Depuración 4. Gestión de Librerías 5. Servidores Web y J2EE 6. Acceso a BBDD 7. Extendiendo las capacidades de Eclipse
  • 7. Octubre 2009 1. Eclipse 7 1. Entorno de Desarrollo
  • 8. Octubre 2009 1. Eclipse 8 2. Creación y Refactorización de código
  • 9. Octubre 2009 1. Eclipse 9 3. Depuración
  • 10. Octubre 2009 1. Eclipse 10 4. Gestión de Librerías  Librerías Eclipse  Window>Preferences>Java>Build Path  Librerías de proyecto  Project>Properties>Java Build Path  Pluggins  ECLIPSE_HOMEpluggins  Help>Software Updates>Find & Install
  • 11. Octubre 2009 1. Eclipse 11 5. Servidores Web y J2EE  Tomcat pluggin  http://www.eclipsetotale.com/tomcatPlugin.html  Descargar y descomprimir en ECLIPSEpluggins  Nuevo menú Tomcat y botones de acción  Configurar versión y directorio  Arrancar y detener Tomcat  Crear proyectos Java>Tomcat
  • 12. Octubre 2009 1. Eclipse 12 6. Acceso a BBDD  Pluggin SQLExplorer  http://eclipsesql.sourceforge.net/  Soporte para:  MySQL (com.mysql.jdbc.Driver, mysql-connector-java-3.1.10-bin.jar)  URL:: jdbc:mysql://<server>:<port>/<database>  DB2 (COM.ibm.db2.jdbc.app.DB2Driver, db2java.zip)  URL:: jdbc:db2:<database>  Sybase (com.sybase.jdbc2.jdbc.SybDriver, jconn2.jar)  URL: jdbc:sybase:Tds:<host>:<port>/<database>  Oracle (oracle.jdbc.driver.OracleDriver, classes12.zip)  URL: jdbc:oracle:thin:@ <host>:<port>:<sid>  SQLServer (com.microsoft.jdbc.sqlserver.SQLServerDriver, mssqlserver.jar, msbase.jar, msutil.jar)  URL: jdbc:microsoft:sqlserver://localhost:1433  PostgreSQL (org.postgresql.Driver, postgresql.jar)  URL: jdbc:postgresql://<server>:<port>/<database>
  • 13. Octubre 2009 1. Eclipse 13 7. Extendiendo las capacidades de Eclipse  http://www.eclipse- plugins.info/eclipse/index.jsp  Contiene numerosos pluggins para Eclipse  Posibilidades:  Copiar y descomprimir en ECLIPSEpluggins  Utilizar Help>Software Updates>Find & Install (requiere un repositorio del que descargar)
  • 14. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 14 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 15. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 15 II. Ant 1. Proyectos Ant 2. Configuración de tareas 3. Ejecución de proyectos Ant 4. Despliegue de aplicaciones con Ant
  • 16. Octubre 2009 2. Ant 16 1. Proyectos Ant  ¿Qué es Apache Ant?  Herramienta de compilación hecha con (extiende) Java  Configurada mediante ficheros XML  No depende del SO (multiplataforma)  ¿Dónde se obtiene?  http://ant.apache.org/  ¿Cómo se instala?  Descomprimir el fichero descargado  Añadir las variables JAVA_HOME y ANT_HOME  Añadir JAVA_HOMEbin y ANT_HOMEbin al PATH  Ejecutar ant -diagnostics
  • 17. Octubre 2009 2. Ant 17 1. Proyectos Ant  ¿Qué es un proyecto Ant?  Fichero de construcción build.xml <project name="test" default="compile" basedir=".">  Contiene tareas a realizar (targets) <target name="prepare"> <mkdir dir="${build.dir}"/> </target>  Y dependencias entre las tareas <target name="compile" depends="prepare">  Se invocan las tareas mediante ant <tarea>  Admite propiedades de configuración <property name="build.dir" value="clases"/>
  • 18. Octubre 2009 2. Ant 18 1. Proyectos Ant  ¿Qué estructura tiene un proyecto Ant?  Dentro del directorio de proyecto  Fichero build.xml  Directorio /src para código fuente  Directorio /build para ficheros de salida compilados  Directorio /lib para librería y otras dependencias  En el fichero build.xml  Un único elemento raíz <project>  Una sección de definición de propiedades <property>  Un conjunto de objetivos ejecutables <target>  Se referencia a una propiedad con ${prop}
  • 19. Octubre 2009 2. Ant 19 2. Configuración de Tareas  Target: Secuencia de tareas o acciones <target> <tarea1/> <tarea2/> <tarea3/> </target>  Atributos:  name: (requerido) Permite referenciar esta tarea  depends: Indica una lista de targets de los que depende  if: Condiciona la ejecución a la existencia de una propiedad  unless: Permite la ejecución a menos que exista la propiedad  description: Descripción textual de la tarea (-projecthelp)
  • 20. Octubre 2009 2. Ant 20 2. Configuración de Tareas  Tareas habituales dentro de un target:  http://ant.apache.org/manual/CoreTasks/  <delete>  <mkdir>  <javac>  <jar>  <copy>  <java>  <fileset>  Filtro que permite indicar patrones de fichero  Admite comodines: ?, *, **  Debe especificarse un directorio base (dir)  <include name=“patrón”> y <exclude name=“patrón”>
  • 21. Octubre 2009 2. Ant 21 3. Ejecución de proyectos Ant  Desde el directorio del proyecto  ant [target] lanza el target descrito en build.xml  Desde otro directorio  ant –find busca build.xml hacia arriba  Ejecutar otro fichero de construcción  ant –buildfile otro_build.xml  Parametrizar propiedades  ant –D<porpiedad>=valor  Ejecutar desde Java  java -Dant.home=<directorio ant_home> org.apache.tools.ant.Main [target]
  • 22. Octubre 2009 2. Ant 22 3. Ejecución de proyectos Ant  Ejecución condicional  if/unless <condition property="existe"> <available file="${build.dir}" type="dir" /> </condition> <antcall target="then"/> <target name="then" unless="existe"> <target name="else" if="existe" >  depends <target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/>
  • 23. Octubre 2009 2. Ant 23 4. Despliegue de aplicaciones  Habitualmente se indican targets de preparación, compilación, despliegue y ejecución  Tareas de empaquetamiento  <jar destfile="${app.name}.jar" >  <war destfile="f.war" webxml="web.xml" >  <cab cabfile="${dist}/manual.cab" basedir="htdocs/manual" includes="api/**/*.html" excludes="**/todo.html" verbose="yes" />  <zip>
  • 24. Octubre 2009 2. Ant 24 4. Despliegue de aplicaciones  Filtros sobre directorios  <patternset> indicar directorios/ficheros que cumplen el patrón  <include> y <exclude> para directorios  <includesfile> y <excludesfile> para ficheros  <fileset> es un <patternset> implícito  <zipfileset> equivale a <fileset> en tareas de empaquetamiento  Selectores  Contenedores <and>, <or>, <not> para combinar patrones  CORE: <contains>, <date>, <size>, <type>, …  <filelist> lista explícita de ficheros separada por comas/espacios (atributo dir)
  • 25. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 25 4. Despliegue de aplicaciones BUILD <war destfile="myapp.war" webxml="src/metadata/myapp.xml"> <fileset dir="src/html/myapp"/> <fileset dir="src/jsp/myapp"/> <lib dir="thirdparty/libs"> <exclude name="jdbc1.jar"/> </lib> <classes dir="build/main"/> <zipfileset prefix="images“ dir="src/graphics/images/gifs" /> </war> GENERADO WEB-INF/web.xml WEB-INF/lib/jdbc2.jar WEB-INF/classes/com/myco/myapp/Servlet.class META-INF/MANIFEST.MF index.html front.jsp images/small/logo.gif images/large/logo.gif FICHEROS thirdparty/libs/jdbc1.jar thirdparty/libs/jdbc2.jar build/main/com/myco/myapp/Servlet.class src/metadata/myapp.xml src/html/myapp/index.html src/jsp/myapp/front.jsp src/graphics/images/gifs/small/logo.gif src/graphics/images/gifs/large/logo.gif
  • 26. Octubre 2009 2. Ant 26 4. Despliegue de aplicaciones  Filtros (tareas <copy> y <move>)  <mapper> permite mapear ficheros FROM a ficheros TO  type=flatten elimina directorios y paquetes  type=merge sólo considera el atributo TO  type=glob admite asteriscos en el FROM y en el TO  type=regexp admite expresiones regulares  type=package transforma directorios FROM en paquetes TO  type=unpackage hace lo contrario  <filterset> permite indicar grupos de filtros para tokens  Admite begintoken y endtoken (@ por defecto)  <filter token="CLASE" value="${Clase}" />
  • 27. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 27 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 28. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 28 III. Maven 1. Goals Maven 2. Gestión de Dependencias 3. Arquetipos 4. Pluggins 5. Maven vs. Ant
  • 29. Octubre 2009 3. MAVEN 29 1. Goals Maven  ¿Qué es Maven?  Un framework de gestión de proyectos, que proporciona un modelo estándar de gestión y descripción de proyectos  Sistema de estándares + repositorio + SW para manejar y describir proyectos  Estándares  Una estructura estándar para los directorios  Una salida principal para cada proyecto  Una convención de nombres estándar  Reutilización  Ejecución declarativa  Organización coherente de dependencias
  • 30. Octubre 2009 3. MAVEN 30 1. Goals Maven  Ciclo de Vida  Validar  Inicializar  Generar fuentes  Procesar fuentes  Generar recursos  Compilar  Estructura de carpetas  src/main/java: Código fuente  src/main/resources: Otros recursos  src/test/java: Código fuente de pruebas.  src/test/resources: Otros recursos para las pruebas  Toda la información almacenada en pom.xml
  • 31. Octubre 2009 3. MAVEN 31 1. Goals Maven  Instalación  Descargar mvn y crear la variable M2_HOME  Añadir M2_HOMEbin a PATH y comprobar mvn - version  Crear la variable M2_REPO apuntando a .m2/repository  settings.xml permite configurar las conexiones de Maven  Goals  Objetivos que permiten realizar una tarea  mvn <goal>
  • 32. Octubre 2009 3. MAVEN 32 1. Goals Maven  Generación de proyectos  mvn archetype:create -DgroupId=com.empresa.solucion -DartifactId=mi-aplicacion  mvn eclipse:eclipse genera un proyecto de Eclipse  Compilación y ejecución  mvn compile compila el proyecto  mvn test lanza las prueba de src/test  mvn test-compile sólo compilar las pruebas  Empaquetado e instalación  mvn package empaqueta el proyecto  mvn install instala en repositorio local  Otros comandos  mvn clean, mvn resolve, mvn site, mvn deploy, …
  • 33. Octubre 2009 3. MAVEN 33 2. Gestión de Dependencias  Fichero POM (Project Object Model) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ejemplos</groupId> <artifactId>EjemploMaven1</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>EjemploMaven1</name> <url>http://maven.apache.org</url>
  • 34. Octubre 2009 3. MAVEN 34 2. Gestión de Dependencias  Fichero POM (Project Object Model)  Las dependencias no acompañan al código  Se puede indicar un ámbito de aplicación (scope)  compile, test, provided, run-time, system  Elementos de descripción  groupId: Nombre de organización, suele coincidir con el paquete  artifacId: Identificador del componente que se esta desarrollando  version: Versión actual del desarrollo  scope: Ámbito en el que se usa (compile, test, provided, run- time, system)  type: Empaquetamiento de la dependencia
  • 35. Octubre 2009 3. MAVEN 35 2. Gestión de Dependencias  Fichero POM (Project Object Model)  Indica la estructura y dependencias de un proyecto  Maven resuelve automáticamente dependencias transitivas y descarga de repositorio <project ...> ... <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
  • 36. Octubre 2009 3. MAVEN 36 2. Gestión de Dependencias  Las dependencias se heredan entre módulos  Existe un super-pom del que heredan todos  mvn help:effective-pom  Gestor de dependencias  Permite indicar una versión preferida para las dependencias  No afecta al grafo de dependencias del proyecto <dependencyManagement> <dependencies> <dependency> <groupId>org.apache.maven.proficio</groupId> <artifactId>proficio-model</artifactId> <version>${project.version}</version> </dependency>
  • 37. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 37 2. Gestión de Dependencias  Exclusión de Dependencias  Supongamos que tenemos estas dependencias <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-el</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.apache.myfaces.core</groupId> <artifactId>myfaces-api</artifactId> <version>1.1.5</version> </dependency> </dependencies>
  • 38. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 38 2. Gestión de Dependencias  Exclusión de Dependencias  Si ahora cada uno depende a su vez de otra… (en su propio pom.xml) <artifactId>commons-el</artifactId> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0.3</version> </dependency> </dependencies> <artifactId>myfaces-api</artifactId> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.0.4</version> </dependency> </dependencies>
  • 39. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 39 2. Gestión de Dependencias  Exclusión de Dependencias  El paquete generado contendrá ambas versiones  Para evitarlo se pueden excluir dependencias <dependencies> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-el</artifactId> <version>1.0</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
  • 40. Octubre 2009 3. MAVEN 40 3. Arquetipos  Los arquetipos permiten crear una estructura de proyecto sin tener que escribir el pom.xml  Listado de Arquetipos  http://docs.codehaus.org/display/MAVENUSER/Archetypes+List  mvn archetype:generate  Ejemplos:  appfuse-basic-jsf  appfuse-basic-struts  maven-archetype-j2ee-simple  maven-archetype-mojo  maven-archetype-site  …
  • 41. Octubre 2009 3. MAVEN 41 4. Pluggins  Permiten extender la funcionalidad de Maven  Se añaden al pom.xml  Se puede indicar una configuración personalizada <configuration>  Se puede restringir la ejecución a alguna fase del ciclo de vida <executions> <execution> <phase>integration-test</phase>  Se pueden crear pluggins personalizados mediante MOJO
  • 42. Octubre 2009 3. MAVEN 42 4. Pluggins  Reporting (mvn site) <reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> </plugin> </plugins> </reporting>  Build <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0</version> <configuration> <source>1.5</source><target>1.5</target> </configuration> </plugin> </plugins> </build>
  • 43. Octubre 2009 3. MAVEN 43 4. Pluggins  SCM  http://maven.apache.org/scm/plugins/  Permite la conexión con sistemas de control de versiones <connection> scm:svn:http://localhost/repositorios/miRepo </connection>  Eclipse  http://m2eclipse.codehaus.org/update/site.xml  http://code.google.com/p/q4e/wiki/Installation  mvn eclipse:eclipse  Requiere la variable M2_REPO  Permite lanzar tareas Maven como herramienta externa
  • 44. Octubre 2009 3. MAVEN 44 5. Maven vs. Ant  Incluir tareas Ant en Maven  Plugin maven-antrun-plugin  Permite especificar tareas ant a ejecutar  Ejemplo: <rmic base="${target.classes.dir}" classname="org.springframework.remoting.rmi. RmiInvocationWrapper"/> <rmic base="${target.classes.dir}" iiop="true" classname="org.springframework.remoting.rmi. RmiInvocationWrapper"> <classpath refid="all-libs"/> </rmic>
  • 45. Octubre 2009 3. MAVEN 45 5. Maven vs. Ant  Ejemplo: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>process-classes</phase> <configuration> <tasks> <echo>Running rmic</echo> <!– TAREAS ANT A EJECUTAR --> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions>
  • 46. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 46 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 47. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 47 IV.Sistemas de Control de Versiones 1. Repositorios de Código 2. CVS 3. Subversion 4. Subversive
  • 48. Octubre 2009 4. Sistemas de Control de Versiones 48 1. Repositorios de Código  ¿Qué es un repositorio?  Sitio centralizado donde se almacena y mantiene información digital  Repositorio de código almacena y mantiene código fuente  ¿Qué es una versión/revisión?  Estado en que se encuentra un producto en un momento de su desarrollo  ¿Qué es un sistema de control de versiones?  Aplicación que gestiona el estado de un proyecto en base a un repositorio que almacena el histórico de versiones
  • 49. Octubre 2009 4. Sistemas de Control de Versiones 49 1. Repositorios de Código  Un sistema de control de versiones debe proporcionar:  Mecanismo de almacenaje de los elementos a gestionar (archivos, imágenes, documentación, ...)  Posibilidad de realizar cambios sobre los elementos almacenados (modificaciones parciales, añadir, borrar, renombrar o mover elementos)  Registro histórico de las acciones realizadas con cada elemento o conjunto de elementos (pudiendo volver a un estado anterior del producto)
  • 50. Octubre 2009 4. Sistemas de Control de Versiones 50 1. Repositorios de Código  Conceptos  Módulo: Estructura de directorios de un proyecto  Etiquetar: Dar a una versión de cada módulo un nombre común  Línea base: Versión aprobada a partir de la que se realizan los siguientes cambios  Rama: Cada una de las versiones en desarrollo obtenida a partir de una línea base  Check-in: Envío de una copia modificada a repositorio  Check-out: Obtención de una copia en local  Conflicto: Cada vez que se realizan cambios, hay que resolverlos  Integración: Unión de uno o varios conjuntos de cambios sobre una versión unificada
  • 51. Octubre 2009 4. Sistemas de Control de Versiones 51 2. CVS  Concurrent Versions System  Servidor CVSNT para Windows (http://www.march- hare.com/cvspro/es.asp)  CVSNT Control Panel 1. Detener los servicios (Pestaña About) 2. Añadir un repositorio (Pestaña Repository Configuration) 3. Opcionalmente configurar el servidor (Server Settings) 4. Aplicar los cambios y reiniciar los servicios 5. Crear una variable CVSROOT=:sspi:<host>:/<repositorio> 6. Añadir usuario(s) al sistema (Windows) 7. Crear un password para cada usuario (cvs passwd –a <usuario>)
  • 52. Octubre 2009 4. Sistemas de Control de Versiones 52 2. CVS  Cliente CVS  Habitualmente se admite check-out anónimo  Y se exige un usuario para check-in  cvs <orden> [opciones]  Órdenes básicas  import crear un módulo nuevo con el directorio actual  co check-out inicial de un módulo  commit check-in de los cambios realizados  update actualización de los cambios de otros usuarios  diff muestra diferencias entre revisiones  add añade ficheros al módulo (-kb para binarios)  remove elimina ficheros del módulo
  • 53. Octubre 2009 4. Sistemas de Control de Versiones 53 2. CVS  Resolución de conflictos  Al hacer update o commit  CVS se quejará si hay conflictos que no pueda resolver  El fichero en conflicto aparecerá marcado para su edición <<<<<<< Fichero texto-versión-1 ======= texto-versión-2 >>>>>>> revisión  Resolver el conflicto  Repetir el update o commit
  • 54. Octubre 2009 4. Sistemas de Control de Versiones 54 2. CVS  Desde Eclipse 1. Configurar la perspectiva CVS 2. Botón derecho>Team>Share Project 3. ¡¡OJO!! Añadir .project y .classpath a la lista de ignorados 4. Etiquetar la revisión (Team>Tag as Version) 5. Ya aparecerán las opciones de trabajo  Commit, Update, Branch, Merge, Tag as Version 6. La resolución de conflictos es gráfica
  • 55. Octubre 2009 4. Sistemas de Control de Versiones 55 3. Subversion  CVS es un sistema de control de versiones antiguo  Subversion es la evolución natural de CVS  Hereda comandos (svn co, svn add,…)  Y añade nuevos (svn cp, svn status,…)  Conceptos  Trunk Tronco, se refiere a una línea base  Branch Rama derivada del tronco  Tag Etiqueta
  • 56. Octubre 2009 4. Sistemas de Control de Versiones 56 3. Subversion  http://svn1clicksetup.tigris.org/  Instala SVN en “1 paso”  Instala TortoiseSVN como cliente Windows  Consideraciones  Crear un usuario para SVN  Opcionalmente crear un proyecto inicial  Genera un servicio de control SVNService  Podemos omitir TortoiseSVN  Se accede como svn://localhost  Se admiten referencias http://, file:///, etc.
  • 57. Octubre 2009 4. Sistemas de Control de Versiones 57 3. Subversion  Comandos  svn add Añade elementos a repositorio  svn co Obtiene una copia local  svn cleanup Limpia una copia de trabajo local  svn commit Actualiza cambios en el repositorio  svn import Commit recursivo de archivos no versionados  svn export Obtiene la estructura de directorios limpia  svn mkdir Crea un directorio en el repositorio  svn cp Crea una nueva rama  svn merge Fusiona dos ramas  svn resolved Marca los conflictos como resueltos  svn revert Deshace los cambios de una copia local  svn update Actualiza cambios del repositorio en local
  • 58. Octubre 2009 4. Sistemas de Control de Versiones 58 3. Subversion  svn help  Muestra todos los comandos disponibles  svn status  Muestra el estado de una copia de trabajo  Estados de un fichero SVN  A Fichero añadido  D Fichero eliminado  M Fichero modificado  ? Fichero local nuevo (no existe en repositorio)  ! Fichero remoto distinto de la copia local  U Fichero actualizado desde repositorio  G Fichero guardado en repositorio  C Fichero con conflictos
  • 59. Octubre 2009 4. Sistemas de Control de Versiones 59 3. Subversion  Propiedades de un fichero/directorio  svn:read-only Fichero de solo lectura  svn:executable Fichero ejecutable  svn:mime-type Indica el tipo mime del fichero  svn:ignore Fichero ignorado  Operaciones con propiedades  svn propget <propiedad> <fichero>  svn propset <propiedad> <valor> <fichero>  svn propedit <propiedad> <fichero>
  • 60. Octubre 2009 4. Sistemas de Control de Versiones 60 3. Subversion  Herramientas de administración  svnlook  Analiza los cambios en un repositorio  svnadmin  Permite crear repositorios, mostrar revisiones, cambiar el log de revisiones, copias de seguridad, …  shell consola de navegación por el repositorio  dump copia de seguridad a salida estándar  load recupera una copia de seguridad  setlog modifica el log de una revisión
  • 61. Octubre 2009 4. Sistemas de Control de Versiones 61 4. Subversive  Proyecto para la integración de Subversion para Eclipse  http://www.eclipse.org/subversive/  Permite trabajar con repositorios SVN de modo similar al que se trabaja con CVS  Características  Exploración de repositorio remoto  Compartición de proyectos y check-out  Sincronización de proyectos para cambios incomming/outgoing  Commit, update y revert  Histórico de cambios  Resolución de conflictos por mezcla (merge)
  • 62. Octubre 2009 4. Sistemas de Control de Versiones 62 4. Subversive  Perspectiva SVN Repository Exploring  Añadir svn://localhost  Compartir el proyecto con este repositorio  Botón derecho > Team > Share project  Opciones  De acceso: Synchronize, Commit, Update, Revert  De estructura: Tag, Branch, Merge, Switch  Otras: Show properties, Set property, Copy to, Export  También se puede crear un proyecto como check-out de un repositorio
  • 63. Octubre 2009 4. Sistemas de Control de Versiones 63 4. Subversive
  • 64. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 64 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 65. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 65 V. Gestión de Incidencias 1. Propósito de un SGI 2. Bugzilla 3. Instalación y Administración 4. Creación de Usuarios 5. Registro de incidencias (Bugs)
  • 66. Octubre 2009 5. Gestión de Incidencias 66 1. Propósito de un SGI  Toda aplicación en explotación puede generar incidencias  El cliente reporta estas incidencias a su contacto (comercial, jefe de proyecto, gerente,…)  El contacto deriva la incidencia al equipo de desarrollo  El equipo la resuelve y se lo comunica al contacto  El contacto le devuelve al cliente una nueva versión  Un SGI pretende llevar un control más preciso de este proceso
  • 67. Octubre 2009 5. Gestión de Incidencias 67 1. Propósito de un SGI  “Un SGI es una aplicación informática diseñada para ayudar a asegurar la calidad de software y asistir a los programadores y otras personas involucradas en el desarrollo y uso de sistemas informáticos en el seguimiento de los defectos de software”  Componentes  Base de Datos  Aplicación de acceso (escritorio o Web)
  • 68. Octubre 2009 5. Gestión de Incidencias 68 1. Propósito de un SGI  Errores  Bloqueante: impide que se pueda seguir desarrollando/probando  Crítico: caída de la aplicación, pérdida de datos, …  Mayor: pérdida importante de funcionalidad, datos de salida incorrectos, o dificultades que impiden el uso del programa  Normal: una parte del componente no es funcional  Menor: un problema al cual se le puede dar la vuelta  Trivial: un problema estético  Mejora: solicitud de una nueva característica o funcionalidad
  • 69. Octubre 2009 5. Gestión de Incidencias 69 2. Bugzilla  Bugzilla es un conjunto de cgi que nos permiten mantener una base de datos de incidencias de un proyecto desde un navegador Web  Requiere un servidor Web, una base de datos y Perl  Permite el alta y baja de incidencias sabiendo  Versión a la que afecta  Encargado de resolverla  Estado de la incidencia (abierta, rechazada, cerrada, …)  Histórico de cambios realizados
  • 70. Octubre 2009 5. Gestión de Incidencias 70 3. Instalación y Administración  Instalación en Windows  Requiere MySQL, Apache y ActivePerl  Instalable sobre SQLServer e IIS (Bugzilla??)  http://www.bugzilla.org/download/  http://dev.mysql.com/downloads/mysql/5.1.html  http://www.activestate.com/activeperl/downloads/  http://httpd.apache.org/download.cgi
  • 71. Octubre 2009 5. Gestión de Incidencias 71 3. Instalación y Administración  Instalación en Windows 1. Descargar las aplicaciones indicadas 2. Descomprimir Bugzilla 3. Instalar MySQL  Crear una instancia “bugs” y un usuario “bugs” con permisos totales sobre ella (BUGZILLA_HOMElocalconfig) 4. Instalar ActivePerl  perl checksetup.pl (desde el directorio de bugzilla)  Resolver las distintas dependencias  Montar la BD (ppm install DBD-mysql) 5. Instalar Apache  Configurar permisos, httpd.conf y CGI
  • 72. Octubre 2009 5. Gestión de Incidencias 72 3. Instalación y Administración
  • 73. Octubre 2009 5. Gestión de Incidencias 73 4. Creación de Usuarios
  • 74. Octubre 2009 5. Gestión de Incidencias 74 5. Registro de incidencias (Bugs)
  • 75. Octubre 2009 5. Gestión de Incidencias 75 5. Registro de incidencias (Bugs)
  • 76. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 76 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 77. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 77 VI.Sistemas de Pruebas 1. Clases de Test 2. Ciclo de Vida de un Test 3. Aserciones 4. JUnit 5. DbUnit 6. HttpUnit 7. Ejecución de Pruebas
  • 78. Octubre 2009 6. Sistemas de Pruebas 78 1. Clases de Test  JUnit está diseñado bajo los patrones de diseño Command y el patrón Composite  Un TestCase es un objeto Command y una clase de Test es una clase que extiende TestCase y contiene métodos de testeo  Antes de Java 5  Los métodos debían llamarse testXXX()  Se admitían los métodos setUp() y tearDown() para inicializar y liberar objetos (pre-post condiciones)  Después de Java 5  Se utilizan anotaciones @Before, @Test, @After  Utilizables a nivel de clase o a nivel de método (test)  No importan los nombres de los métodos ni hay que heredar TestCase
  • 79. Octubre 2009 6. Sistemas de Pruebas 79 2. Ciclo de Vida de un Test  Todos los programas tienen errores  Un test NO se realiza para comprobar que un sistema no tiene errores, NI para demostrar que funciona  Un test se realiza para encontrar fallos (decisión fuerte)  Se pueden probar las distintas fases de desarrollo  Modelo en V
  • 80. Octubre 2009 6. Sistemas de Pruebas 80 3. Aserciones  Condiciones que deben cumplirse para validar un test  En caso de fallo lanza un AssertionFailedError  Se especifican mediante la clase org.junit.Assert  assertTrue(“mensaje”, condición)  assertFalse(“mensaje”, condición)  assertSame(objeto, objeto)  assertNotSame(objeto, objeto)  assertNull(objeto)  assertNotNull(objeto)  assertEquals(variable, variable)  JUnit3 hereda los métodos (extends TestCase)  JUnit4 requiere importarlos (import static)
  • 81. Octubre 2009 6. Sistemas de Pruebas 81 4. JUnit  Framework para pruebas unitarias  Pruebas de funcionamiento de una clase  Paquetes junit.* (JUnit 3) y org.junit.* (JUnit 4)  Disponible en Eclipse (JUnit 3 y 4)  Proyectos de prueba (New > Project > Examples)  Ejecutable como JUnit (junit.samples.AllTests)  Ejecutable como Swing o AWT (TestRunner)  JUnit 4 admite timeout, excepciones esperadas, tests ignorables, auto-documentación, …
  • 82. Octubre 2009 6. Sistemas de Pruebas 82 4. JUnit  Paquetes de pruebas (Suites)  Permite ejecutar pruebas de varias clases en conjunto desde una lanzadora  En JUnit 3 se añaden clases a TestSuite  suite.addTest(ClaseTest.suite());  suite.addTestSuite(ClaseTest.class);  En JUnit 4 se usan anotaciones de clase  @RunWith(Suite.class)  @SuiteClasses({C1Test.class, C2Test.class})
  • 83. Octubre 2009 6. Sistemas de Pruebas 83 5. DbUnit  Herramienta para simplificar las pruebas unitarias de operaciones sobre base de datos  http://www.dbunit.org/  Carga los datos de test de XML  El framework DbUnit extiende JUnit 3  Contiene métodos para distintas comparaciones entre datos (desde texto plano, consultas, tablas, …)  En lugar de extender TestCase se extiende DatabaseTestCase  Requiere implementar dos métodos  protected IDatabaseConnection getConnection() throws Exception  protected IDataSet getDataSet() throws Exception
  • 84. Octubre 2009 6. Sistemas de Pruebas 84 5. DbUnit  Ciclo de vida 1. Eliminar datos de anteriores ejecuciones del test de la BD 2. Cargar datos nuevos desde el sistema de archivos 3. Ejecutar pruebas considerando aserciones  Nótese: no se realizan tareas de restauración  Permite cargar datos para un único test  DatabaseTestCase  setUp() borra y reinserta los datos de getDataSet()  tearDown() no realiza ninguna acción
  • 85. Octubre 2009 6. Sistemas de Pruebas 85 5. DbUnit  Realización de pruebas  org.dbunit.Assertion permite establecer aserciones entre DataSets  No importa el origen de datos  FlatXmlDataSet  QueryDataSet  XlsDataSet  CsvDataSet  IDataSet  También permite exportar datos a distintos destinos
  • 86. Octubre 2009 6. Sistemas de Pruebas 86 6. HttpUnit  Framework para probar sitios Web basado en JUnit  http://www.httpunit.org/  com.meterware.WebConversation simula un navegador accediendo al servidor  WebRequest y WebResponse auxiliares para indicar la URL y obtener la respuesta  La respuesta será HTML  getText() la devuelve como texto  getDOM() la devuelve como objeto XML DOM
  • 87. Octubre 2009 6. Sistemas de Pruebas 87 6. HttpUnit  Enlaces  WebLink link = response.getLinkWith("texto");  link.click();  Se recarga la respuesta con el método getCurrentPage() de WebConversation  También existe getLinkWithImageText() que busca en el texto ALT de una imagen  Tablas  WebTable table = resp.getTables()[0];  Método asText() la devuelve como String[][]  Marcos  getFrameContents("marco") devuelve un WebResponse
  • 88. Octubre 2009 6. Sistemas de Pruebas 88 6. HttpUnit  Formularios  WebForm form = resp.getForms()[0];  form.getParameterValue("parámetro") ;  getParameterNames() devuelve un String[]  setParameter("parámetro", "valor");  toggleCheckbox("parámetro"); para checkbox  submit(); envía los datos  reset(); resetea a los valores por defecto
  • 89. Octubre 2009 6. Sistemas de Pruebas 89 7. Ejecución de Pruebas  Desde Eclipse  Run as JUnit  Desde consola  java org.junit.runner.JUnitCore [Clase de Test]  Desde Swing  java junit.swingui.TestRunner  Desde AWT  java junit.awtui.TestRunner  Desde Ant  <junit><test name="Clase de Test" /></junit>
  • 90. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 90 Contenidos I. Eclipse II. Ant III. Maven IV. Sistemas de Control de Versiones V. Sistemas de Gestión de Incidencias VI. Sistemas de Pruebas VII. Otros Plugins de Eclipse
  • 91. Octubre 2009 Herramientas para el desarrollo y gestión de proyectos Java 91 VII.Otros Plugins de Eclipse 1. Selenium IDE 2. JMeter 3. I18N 4. Hibernate Tools 5. Spring IDE
  • 92. Octubre 2009 7. Otros Pluggins de Eclipse 92 1. Selenium IDE  Paquete de herramientas para automatizar pruebas de aplicaciones Web en distintas plataformas  http://seleniumhq.org/  NO es pluggin de Eclipse sino de Firefox  CubicTest SÍ es un pluggin para Eclipse  http://cubictest.seleniumhq.org/  Requiere Eclipse 3.3 Ganymede  Requiere pluggin Eclipse Graphical Editing Framework (GEF)
  • 93. Octubre 2009 7. Otros Pluggins de Eclipse 93 1. Selenium IDE
  • 94. Octubre 2009 7. Otros Pluggins de Eclipse 94 1. Selenium IDE
  • 95. Octubre 2009 7. Otros Pluggins de Eclipse 95 1. Selenium IDE
  • 96. Octubre 2009 7. Otros Pluggins de Eclipse 96 2. JMeter  Herramienta para realizar pruebas de stress sobre un servidor Web  http://jakarta.apache.org/jmeter/  Se parte de un plan de pruebas (test plan) que deberá contener un grupo de hilos (thread group) para lanzar llamadas concurrentes  Se puede indicar  Nombre del grupo  Número de hilos  Tiempo para generar los hilos  Número de veces que se lanza una petición al servidor
  • 97. Octubre 2009 7. Otros Pluggins de Eclipse 97 2. JMeter  Dado un plan de pruebas y un grupo de hilos se indicar la URL del servidor a probar (Add>Sampler>HTTPRequest)  Indicar  Máquina (nombre o IP)  Puerto (80)  Protocolo (http)  Método de petición (GET/POST)  Directorio Web a consultar  Posibles parámetros para la petición  …
  • 98. Octubre 2009 7. Otros Pluggins de Eclipse 98 2. JMeter  Para mostrar los resultados se debe añadir un Listener al plan de pruebas  Árbol de resultados (Results Tree)  Para cada petición muestra la respuesta HTTP, la petición y los datos HTML devueltos  Tiene un renderizador de HTML y XML  Informe agregado (Aggregate Report)  Muestra un resumen de los resultados  Gráfico de resultados (Graph results)  Muestra un gráfico de rendimiento  …
  • 99. Octubre 2009 7. Otros Pluggins de Eclipse 99 3. I18N  Proceso de internacionalización y localización  Internacionalización  Diseñar software adaptable a distintos idiomas y regiones sin reprogramar  Localización  Adaptar software internacionalizado a un idioma concreto con componentes específicos y ficheros de localización (es-es, en-GB, en-US, …)  Se utilizan tokens en lugar de texto al desarrollar  Se sustituyen los token de ficheros de localización
  • 100. Octubre 2009 7. Otros Pluggins de Eclipse 100 3. I18N  Ejemplo Hola Mundo 1. Source>Externalize Strings 2. Determinar los textos a externalizar o ignorar 3. Determinar el fichero .properties asociado 4. Comprobar el gestor de recursos que genera 5. Si no hay ficheros de localización utiliza el generado 6. Si añadimos copias localizadas utiliza la copia del idioma instalado (Windows)
  • 101. Octubre 2009 7. Otros Pluggins de Eclipse 101 4. Hibernate Tools  Conjunto de herramientas para la persistencia de objetos en bases de datos relacionales  https://www.hibernate.org/  Disponible para Java y .Net  Define el mapeo tablas-clases en ficheros XML  Las clases son VO serializables  La lógica de acceso la implementa hibernate  Fichero de configuración  Conexión, usuario, password, …
  • 102. Octubre 2009 7. Otros Pluggins de Eclipse 102 5. Spring IDE  Framework para la creación de beans Java a través de documentos XML  http://www.springide.org/  Permite la inyección de dependencias a la hora de crear estos beans  Sólo se necesita crear la clase Java (POJO)  Equivale a un Diagrama de Objetos UML