Introducción de dependencias

De Wiki de EGC
Saltar a: navegación, buscar

Conceptos

La otra funcionalidad básica que ofrece Maven es la gestión de las dependencias. Cualquier proyecto depende de código desarrollado por terceros: desde JUnit para ejecutar pruebas unitarias a librerías para gestionar logs o frameworks como Spring para facilitar el desarrollo de nuestra aplicación. Maven se encarga de descargar y organizar estas dependencias por nosotros para evitar que tengamos que hacerlo manualmente. Para ello se basa en tres elementos:

Repositorios remotos

En estos repositorios los desarrolladores suben las dependencias. Existe un repositorio por defecto, Maven Central, que es donde están subidas la mayoría de dependencias. No obstante, si tenemos dependencias privadas (por ejemplo, código que no queremos hacer público) podemos utilizar repositorios instalados en nuestra propia organización. Esto último también resulta útil para cachear las dependencias de Maven Central y conseguir que se descarguen más rápido a las máquinas de nuestros desarrolladores.

Los repositorios están organizados simplemente en directorios.

  1. Configuración de las dependencias de nuestro proyecto en el fichero pom.xml del mismo.
  2. Carpeta ${user.dir}/.m2, que es donde maven guarda y organiza las dependencias que se va descargando en nuestra máquina. Todos los JAR que hay ahí están disponibles para cualquier proyecto maven que utilicemos en nuestra máquina. Ahí es donde va a parar también nuestros JAR cuando ejecutamos la fase install.

Buscar la referencia a log4j

Añadir dependencia en el pom.xml del proyecto

<dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
     <scope>compile</scope>
</dependency>

Hay tres tipos de Scope: compile, test, runtime. Dependerá de que en qué fase se quiere tener disponible la dependencia.

Compilar y ver como se descarga la dependencia

mvn compile

Crear el fichero log4j.properties en la carpeta main/resources

Incluir este contenido:

# Root logger option
log4j.rootLogger=INFO, stdout
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Modificar App.java para incluir un Logger

import org.apache.log4j.*; 

static Logger log=Logger.getLogger(App.class); 

log.info("Returning 1");

Testear el proyecto para observar el log

mvn test