Monthly Archives: November 2009

Aplicación multi-modulo “Hola Mundo” con Maven

Published / by Renan Huanca / 6 Comments on Aplicación multi-modulo “Hola Mundo” con Maven

Acá muestro un ejemplo de una aplicación multi-modulo usando maven.

El ejemplo esta basado en este articulo: Chapter 7. Multi-module Enterprise Project

Descripción

Básicamente este ejemplo es solo una aplicación que muestra un el texto “Hola Mundo”.

Esta aplicación esta compuesta por dos módulos: ‘my-webapp’, que define una sevlet que imprime un mensaje y ‘my-module’ que contiene un servicio que devuelve el mensaje que imprime la servlet.

Esta es la estructura de directorios y archivos:

multiapp/
¦   pom.xml
+---my-module
¦   ¦   pom.xml
¦   +---src
¦       +---main
¦           +---java
¦                   HelloWorldService.java
+---my-webapp
    ¦   my-webapp.iml
    ¦   pom.xml
    +---src
        +---main
            +---java
            ¦       HelloWorldServlet.java
            +---webapp
                ¦   index.jsp
                +---WEB-INF
                        web.xml

Archivos pom.xml

pom.xml principal

    4.0.0
    edu.renan
    multiapp
    pom
    1.0
    Test Modules App
    
        my-module
        my-webapp
    
    
        
            net.sourceforge.openutils
            openutils-testing-testng
            2.2.2
        
    
    
        multiapp
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.5
                    1.5
                
            
        
    

La parte importante en el pom.xml principal es que se definen los módulos: my-webapp y my-module dentro de la etiqueta <modules>

También hay que tomar en cuenta que el packaging es definido como ‘pom’

pom.xml – my-module

	4.0.0
	
		edu.renan
		testmodules
		1.0
	
	my-module
	jar
	my-module

Acá estamos definiendo cual sera el modulo padre usando la etiqueta ≷parent> y el packaging como ‘jar’. Utilice jar por que este modulo generara un jar file.

pom.xml – my-webapp

    4.0.0
    
        edu.renan
        testmodules
        1.0
    
    my-webapp
    war
    1.0
    my-webapp
    
        
            servletapi
            servlet-api
            2.4
            provided
        
        
            edu.renan
            my-module
            1.0
        
    
    
        mywebapp
    

Acá definimos un parent lo mismo que el anterior, pero para el packaging usamos ‘war’, por que este modulo generara una aplicación web.

Classes java y web.xml

HelloWorldService
public class HelloWorldService {
    public String sayHello(){
        return "Hola Mundo";
    }
}

Como verán es solo una clase con un método con un método que retorna el mensaje “Hola Mundo”.

HelloWorldServlet
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;

public class HelloWorldServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HelloWorldService helloWorldService = new HelloWorldService();
        response.getWriter().println(helloWorldService.sayHello());
    }
}

Esta servlet solo llama al servicio definido anteriormente.

web.xml


    My Web App
    
        helloWorldServlet
        HelloWorldServlet
    

    
        helloWorldServlet
        /helloWorld
    

    
        index.jsp
    

Espero este ejemplo les sirva mucho, si quieren mas recursos acá tienen algunos que encontré:

El código fuente lo pueden encontrar en https://github.com/rhuanca/examples/tree/master/maven-multimodule.