Como usar Maven en una aplicación Web

En nuestro articulo de hoy crearemos una aplicación Web simple con Apache Maven, la cual puede ser gestionada por IDEs tales como Eclipse o Netbeans.

Requisitos

  • Java JDK 6 o superior
  • Apache Maven 2 o superior
  • Eclipse versión JEE
Pasos a seguir:
  1. Abrimos la consola de Msdos o Limix y creamos un proyecto con Maven utilizando el arquetipo adecuadomaven-archetype-webapp
    mvn archetype:generate -DgroupId=com.sobrejava.ejemplo.web -DartifactId=ejemplo-web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    
    Ahora tenemos una estructura similar a la siguiente
  2. Ahora agregamos las dependencias necesarias para una aplicación Web, en este ejemplo utilizaremos java-web-6, la cual nos brinda lo necesario para poder iniciarnos en el desarrollo de ServletsJSP, etc. Para ello editamos el archivo pom.xml de la siguiente manera
    Código del archivo pom.xml
    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.sobrejava.ejemplo.web</groupId>
      <artifactId>ejemplo-web</artifactId>
      <packaging>war</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>ejemplo-web Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <!-- agregamos el API para JEE6 -->
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
      </dependencies>
      <build>
        <finalName>ejemplo-web</finalName>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </project>
    
  3. Editamos el archivo src/main/webapp/web.xml con el descriptor 3.0
    Código del archivo web.xml
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
              version="3.0">
    
        <display-name>Ejemplo-Web</display-name>
    
    </web-app> 
    
    Algunos IDEs como Eclipse utilizan el descriptor para definir la versión Web de la aplicación.
  4. Finalmente para descargar las dependencias (si es necesario) y asegurarnos que todo esté bien, para ello vamos al directorio de la aplicación y usamos mvn compile

Editar Aplicación con Eclipse IDE

  1. En Eclipse (JEE versión), Seleccionamos un Workspace adecuado y vamos a Menú File -> Import -> Maven Projects -> Existing Maven Project…
  2. En la pantalla de Import Maven Projects seleccionamos el directorio donde se encuentra el proyecto ejemplo-web y seleccionamos Finish
  3. Finalmente tenemos el proyecto configurado con Eclipse WTP .
Espero que este artículo os pueda servir de ayuda en vuestra vida profesional y estad atentos a nuestros próximos artículos, gracias!!!!
www.asociacionaepi.es



Consejos para mejorar como arquitecto de aplicaciones web

Jim Plush un afamado arquitecto de software web nos habla sobre lo que deberíamos conocer para mejorar siendo programadores web.
Consejos para mejorar como arquitecto de aplicaciones web:
  • Conocer qué ofrecen las versiones de PHP 4 y 5 , conocer las mejoras de la versión 6:
    En la versión 4 existe la posibilidad de especificar en las declaraciones de las funciones y operaciones de clases, las variables por referencia o por valor, esto se hace siempre por referencia a partir de la 5, en esta además se pueden especificar partes públicas y privadas en las clases además de poder usar el patrón Singleton y autocarga de clases, la versión 6 añade Unicode para nombrar clases, variables y funciones de la tabla de símbolos, y eliminan register_globals, magic_quotes y safe_mode, y atención : paso por referencias peligroso!
  • PHP, ASP.NET y Ruby on Rails, cuándo es mejor utilizar uno u otro lenguaje y sus tecnologías directamente asociadas que implican también otra forma de pensar y actuar frente a los problemas que puedan ocasionarse…
    Si vas a construir un sitio que necesite ser escalable y muy grande (una gran red social o una tienda que vaya a sufrir muchísimos cambios) entonces es mejor utilizar RoR, en otro caso, si necesitas un lenguaje con el que construir una aplicación web puedes usar PHP o ASP, el segundo es más fácil para los que les gusta diseñar con un IDE y el primero para los que quieren tener un motor potente de un gestor de contenidos o hacerlo todo desde cero o con unframework de aplicaciones rápidas…
  • Ser capaz de realizar programas con sockets para implementar servicios (ftp, telnet, etc.)…un programa con sockets puede ser un plugin de WordPress que haga fetching (algoritmo capturador de contenidos) desde una URL, esto lo publicaré en futuro no muy lejano, mientras podéis ver un ejemplo deprogramación con sockets en PHP
  • Programación Orientada a Objetos: POO
    + por qué especificar un método como privado o público
    + conceptos que son útiles de conocer: interfaces, constructores, destructores, private-public-protected, herencia, polimorfismo, métodos estáticos, etc.
  • Bases de datos: conocer qué es la normalización de base de datos y como exportar/importar esquemas de bases de datos con XML (además de saber como comprimir una base de datos con ZIP o GZIP y enviarlo por mail como adjunto)…ejemplo, además es imprescindible antes de empezar a crear las tablas, hacer nuestro diagrama de E/R
  • Patrones de diseño
  • Control de código fuente (SVN, CSV, etc): esto sirve sobre todo para trabajar en equipo y mantener un control sobre los cambios que vamos realizando en nuestro código fuente (usaremos OHLOH)
  • Unit Testing o Pruebas de Unidad
  • Ser parte de la Comunidad, participar en foros, debates, ayudar a extender los conocimientos, contribuir con algún proyecto aunque sólo sea traduciéndolo a tu idioma…OsCommerce, OpenCMS, Joomla, WordPress, etc.
  • Habilidades con JavaScript, conocer los framework JS existentes (JQuery,  Prototype, MooTools, Dojo, ext,etc.) y hacer ejemplos donde arreglar los problemas de compatibilidad entre ellos…
  • Habilidades con CSS (utilizar CSS dinámico): diseñar online el esqueleto XHTML+CSS de una web
  • Conocer el modelo de caja y cómo AJAX  “encaja” perfectamente en esto :)
  • Saber qué es y como se contruye un sistema gestor de contenidos
  • Usabilidad y Arquitectura de la Información
  • Integrar las redes sociales en nuestra aplicación: login, registro, etc, con facebook, gmail, twitter, menéame, (sharethis),etc.
  • Conocer las herramientas de ayuda para el arquitecto integrables en el navegador: firebug ( y derivados ) ,selenium, etc.
  • Pasión por mejorar (ganar amigos e influenciar para generar más conocimientos que compartir)
Para los avanzados que ya han superado todos los puntos anteriores también tenemos los siguientes:

www.asociacionaepi.es