domingo, 31 de enero de 2016

Compilando MAME desde UBUNTU




Hace unas semanas un amigo me retó a compilar la última versión de MAME en Linux.


Y la verdad es que lo vi como un reto bastante fácil (pensé, me bajo el código, instalo dependencias y ya está). Pues no fue tan fácil, me costó muchísimo encontrar todas las dependencias necesarias. 


¿Por qué hago esto? MAME es un emulador de máquinas recreativas (ahora también incluye el proyecto MESS...) que se va actualizando continuamente. En los repositorios no siempre está la última versión, y si quieres esta última tienes que compilarlo tú.


Mientras escribo este artículo la última versión de MAME es 0.170, después de buscar no he encontrado ninguna guía paso a paso, y ahora que he conseguido compilarlo he decidido que la voy a hacer yo.


Mi sistema operativo es un Ubuntu 14 LTS.


Éstos son lo pasos que hay que seguir:

  1. Creación de entorno: creo el directorio “mame” en mi “home”.

  1. Conseguir el código fuente:

    1. En http://mamedev.org/ es donde están tanto los ejecutables de Windows como los fuentes.
    2. En http://mamedev.org/release.html el último enlace son los fuentes. Actualmente éste es su enlace: http://mamedev.org/downloader.php?file=mame0170/mame0170s.zip
    3. Nos lo descargamos (81 MB).
    4. Descomprimimos en home/mame:
   
        Esto nos crea un “mame.zip”. Voy a crear el subdirectorio “0170”, moverlo y descomprimirlo dentro.



  1. Dependencias
   
Llega el momento de utilizar el terminal, accedemos al directorio donde tenemos todo descomprimido. En mi caso:

cd mame/0170/mame/

    Ahora vamos a instalar todas las dependencias que necesitamos para compilar:

                      sudo apt-get install build-essential libgtk2.0-dev libgnome2-dev libsdl1.2-dev libqt4-dev libqt4-gui libsdl-ttf2.0-dev libsdl2-ttf-dev libsdl2-dev qt5-default

Saber que las dos últimas son necesarias me llevó bastante tiempo.

  1. Actualizamos compiladores
   
Si lanzamos la compilación con “make”, tendremos un error porque el compilador GCC que viene de serie es el 4.8, y MAME requiere al menos la versión 4.9:

“GCC version 4.9 or later needed”

Además de GCC también necesitamos el compilador G++. Ahora mismo los dos están en la versión 4.8.

Con estas líneas instalaremos la versión 4.9 de los dos compiladores:

     sudo add-apt-repository ppa:ubuntu-toolchain-r/test
                sudo apt-get update
                sudo apt-get install gcc-4.9 g++-4.9

Una vez instalado si escribimos “gcc -v” nos aparece:

gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

y si escribimos “g++ -v” nos aparece:

El programa «g++» no está instalado. Puede instalarlo escribiendo:
sudo apt-get install g++

Aparentemente tenemos problemas, parece que no se han actualizado.

Pero es fácil de solucionar, vamos a crear prioridades de ejecución en los enlaces simbólicos de nuestros compiladores.

Escribimos esto:

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20
Ahora verificamos con:

         gcc -v
         g++ -v

Y vemos que ambos están en 4.9.3.       

Si queremos volver a cambiar de versión podemos usar los comandos:

“sudo update-alternatives --config gcc”
“sudo update-alternatives --config g++”
  
   
  1. Compilando
   
    Y ahora sí, podemos lanzar el comando “make” para empiece la compilación.

    Ahora sólo nos queda esperar. Si tenéis varios procesadores podéis usar el comando “make -j N” donde N es el número de procesadores. Con lo que ahorraréis bastante tiempo.

    Yo lo hice en un portátil antiguo de dos núcleos y tardé casi tres horas.
   
   



Al final tendremos en el directorio 0170 el ejecutable "mame" listo.

Si tenéis alguna duda no dudéis en preguntar.

martes, 29 de diciembre de 2015

Instalando Linux en un pendrive



Hace unas semanas os comentabamos cómo utilizar un pendrive para arrancar desde él y poder instalar un sistema operativo en vuestro PC en caso de no tener lector de CD o DVD.

Hoy voy un poco más allá, hace unos días descubrí que podemos instalar un sistema operativo directamente en un USB para poder arrancar y trabajar con él directamente.

Para hacer esto necesitamos una utilidad llamada LILI USB CREATOR que está disponible en: http://www.linuxliveusb.com

Así que manos a la obra, nos bajamos la utilidad, instalamos, ejecutamos y nos aparece esto:


Seleccionamos el USB donde vamos a instalar el Sistema Operativo. Después la ISO, el CD, botón Descargar: donde hay muchísimas distribuciones de Linux (y alguna Windows) para descargar e instalar en el USB. Recomiendan seleccionar una arquitectura de 32 bits para que sea más rápido.

Yo he hecho dos pruebas: una con la distribución KALI 2.0 y otra con Ubuntu 14. En la segunda he seleccionado cuánto tamaño de persistencia dejaba (4 gigas).

Y para terminar pulsamos el rayo (a mí me ha tardado unos diez minutos).

Cuando termina aparece:


Lo he probado con un par de distribuciones: Kali 2.0 y Ubuntu 14. Con la primera no he conseguido lo que me esperaba, normal ya que es una distribución un poco particular. Sin embargo con Ubuntu lo que he conseguido es tener el instalador con su test consiguiendo persistencia de datos.

Supongo que este proyecto irá mejorando, pero de momento promete.

viernes, 4 de diciembre de 2015

Cygwin, el bash de Linux en Windows



Hay veces que necesitamos la potencia de los comandos de Linux, pero nuestro sistema operativo es Windows. Para esto nos viene al pelo Cygwin, un "emulador" de la consola de Linux bastante ligero que nos puede sacar de un apuro más de una vez.

Para conseguirlo sólo tenemos que ir a su web: https://www.cygwin.com/

En el menú pulsaremos "Install Cygwin", elegiremos nuestra arquitectura y nos descargaremos el instalador.

Los primeros pasos de la instalación son los de siempre, en uno de ellos tenemos que elegir la URL de donde descargarnos el software (yo seleccioné la segunda opción).

Justo después tenemos que seleccionar los paquetes adicionales que queremos instalar.


Por defecto nos instala el shell básico, si tenemos claro que queremos utilizar un comando en concreto, por ejemplo curl, podemos buscarlo y verificar si  se va a instalar.


Éste en concreto no viene por defecto, hacemos click en la palabra "Skip" y pasará a la lista de paquetes que tendremos en nuestro shell virtual.

Podemos marcar todos los que nos interesen, no es recomendable marcar todos porque son muchísimos paquetes y puede tardar bastante tiempo en instalarse.

Si después de acabar la instalación queremos añadir alguno más, no hay problema, volvemos a lanzar el instalador y seleccionamos los paquetes que nos faltan. El instalador los añadirá a la instalación existente.

Una vez finalizada la instalación, si arrancamos nos aparecerá una ventana como ésta:



Estamos situados en nuestra "home", que ahora mismo esta vacía.

Podemos cambiarnos a nuestras unidades de Windows muy fácilmente:

Escribimos "cd /cygdrive", si aquí hacemos un ls, veremos nuestras unidades de Windows. En mi caso c y d.

Ahora sólo tenemos que irnos a la carpeta que nos interesa y usar los comandos de Linux que queramos.

Para volver a nuestra home sólo tenemos que escribir "cd", y podemos referirnos a todo lo que contiene con ~ (alt+126)

Con esto ya podemos lanzar comandos tan potentes como "grep", "sed", "find",...

Esto me ha sacado de más de un apuro, y mucho más rápido que con las herramientas de Windows.

Actualización 2021: hace unos días Marc Wilson de https://www.pcwdld.com contacto con nosotros para pedirnos si podíamos enlazar esta articulo con una guía rápida de Cygwin en su portal. 

En ella tenéis mucha más informración sobre este emulador, aquí la tenéis: https://www.pcwdld.com/cygwin-cheat-sheet

Nos vemos pronto.


domingo, 25 de octubre de 2015

Como crear USBs autoarrancables

Cada vez es más común que los nuevos equipos vengan sin unidad de DVD, y sin embargo seguimos teniendo muchos DVDs y CDs en casa que necesitamos utilizar en estos equipos.

Algunos de éstos son autoarrancables o "bootables"; podemos arrancar nuestros PCs con ellos para instalar un sistema operativo desde cero, o para intentar recuperar datos en un PC dañado.

De lo que os quiero hablar hoy es de cómo hacer un USB autoarrancable con uno de estos CDs.

La herramienta que utilizo para esta función se llama "Rufus". Ésta es su web: http://rufus.akeo.ie/?locale, todo su código está en Github por lo que si nos interesa podemos echarle un vistazo: https://github.com/pbatard/rufus

Una vez en nuestro equipo, sólo necesitamos tener la imagen "ISO" del CD/DVD que necesitemos, y un pendrive formateado. Pinchamos la unidad USB en nuestro PC  y arrancamos RUFUS.



Cuando arranca sólo hay que especificarle la unidad destino donde está nuestro USB (la primera opción) y marcar "Create a bootable disk using", a la derecha seleccionamos nuestra ISO y ya podemos pulsar el botón "start".

En unos segundos tendremos nuestro Pendrive listo.

sábado, 11 de julio de 2015

Software para limpiar un PC / Descarga de software


La semana pasada me pidieron ayuda porque tenían un ordenador que no funcionaba bien (Windows XP, instalado hace más de seis años...), y por los síntomas parecía que además tenía virus, malware, etc.

Total, que cuando llegué a casa estuve buscando un kit de programas que suelo utilizar cuando me enfrento a retos de este tipo:

  • Avast Free Antivirus: es el antivirus que más me gusta.
  • AwdCleaner: para limpiar todo el adware y el malware. Muy útil cuando tienes los navegadores secuestrados.
  • CCleaner: un clásico, ideal para limpiar el registro y desinstalar rápidamente los programas que han ido desapareciendo.

Al buscar los programas encontré un portal de descargas que me gustó muchísimo, y ahora es mi fuente oficial de descargas:  http://www.uptodown.com/

Encontré todo lo que buscaba, todos los instaladores son los originales (no te instalan nada por detrás, y no hay que estar pendiente de las opciones de instalación). Además de todos los programas, puedes elegir utilizar la última versión o cualquiera de las anteriores. En definitiva, muy recomendable.

domingo, 14 de junio de 2015

Gestión de dependencias en .Net con nuget



Como mi compañero Juan Carlos Ballesteros ha hecho una introducción sobre la gestión de dependencias con Maven, hoy quiero contribuir con una introducción sobre la gestión de dependencias en .Net con NuGet.

Nuget apareció en el mundo de .Net en 2010, y desde Visual Studio 2012 viene instalado como una extensión:


Gracias a Nuget la gestión de paquetes y las dependencias entre los mismos es mucho más sencilla que antes. Ya no es necesario buscar el paquete manualmente, bajarlo y después referenciarlo, ahora Nuget realiza todo este trabajo con un solo click.

Además no sólo se pueden gestionar los paquetes de forma visual, sino que también se dispone de una consola llamada Package Manager Console en la que se pueden introducir comandos:


NuGet permite no sólo la instalación y gestión de dependencias en nuestros proyectos .Net, sino que además puede ejecutar scripts Powershell que ayuden a completar la inclusión de las dependencias: por ejemplo, para modificar un fichero de configuración que incluya una sección en la que se declara el componente recién introducido.

Cuando se instala NuGet como complemento de Visual Studio, aparece una nueva opción en el menú "Tools/Herramientas" que da acceso a la configuración de NuGet:

Si se accede a la opción "Package Manager Settings" se puede ver que en "Package Sources" se configuran los repositorios a los que se quiere acceder para encontrar los paquetes. Por defecto viene configurado el repositorio oficial de paquetes de Microsoft https://www.nuget.org/, que también puede visitarse por web, pero pueden configurarse repositorios alternativos, como por ejemplo, un repositorio en nuestra empresa que distribuya los componentes internos desarrollados para sus aplicaciones corporativas:


Y como lo mejor es verlo con un ejemplo, vamos a ello.

Supongamos que creamos una aplicación utilizando Visual Studio 2013 en ASP.Net MVC 5:


Hay que destacar que en las propias plantillas de proyectos de Microsoft, como ésta de MVC 5, ya se incluyen varios paquetes de NuGet que se instalan durante la creación del proyecto. 

Para ver las referencias de NuGet utilizadas por un proyecto, se utiliza el menú contextual "Manage NuGet Packages" sobre las referencias de dicho proyecto, o bien en la consola de comandos con "Get-Package -ListAvailable -Filter PackageName", que se comenta más adelante:



Aquí se puede ver que un paquete no son sólo referencias de tipo librería (dll) como por ejemplo "Json.NET", sino que también se pueden incluir como paquetes NuGet otro tipo de componentes, por ejemplo componentes propios de Microsoft (Microsoft ASP.NET MVC), librerías javascript como "jQuery" o frameworks CSS como "bootstrap".

Vamos a añadir a este proyecto el uso de Entity Framework de Microsoft para manejar las conexiones y entidades de Base de Datos:

1) Dentro de "Tools"/"NuGet Package Manager"/"Manage NuGet Packages for Solution", o bien con el menú contextual sobre las Referencias del proyecto, "Manage Nuget Packages..." se elige "Online" y el repositorio donde se encuentra el paquete de Entity Framework, en este caso, nuget.org Si hiciera falta, se puede utilizar el cuadro de búsqueda para buscar el paquete concreto a instalar:


2) Se pulsa "Install/Instalar" y NuGet procederá a la resolución de dependencias actuales dentro del proyecto e instalación del paquete seleccionado. A veces hay que aceptar el uso de licencias durante el proceso. En este caso, el paquete aparte de incluir las referencias necesarias modificará el fichero Web.config para añadir una nueva sección para Entity Framework:



Una vez terminado el proceso podremos ver las nuevas referencias "EntityFramework" y "EntityFramework.SqlServer" añadidas al proyecto, además de las secciones necesarias añadidas al "Web.config".

También se puede ver, añadido al proyecto, un fichero "packages.config" donde se puede ver todos los paquetes NuGet utilizados por el proyecto con sus versiones y versión de framework. Este fichero es utilizado por NuGet para saber tanto los paquetes ya instalados como para comprobar si hay actualizaciones para dichos paquetes:


Como se ha comentado anteriormente, en Visual Studio se dispone de la "Package Manager Console" que también permite la gestión de estas dependencias. Para el caso del ejemplo anterior, si en vez de utilizar el menú visual para instalar Entity Framework en nuestra aplicación MVC quisiéramos hacerlo por comando, sería tan sencillo como elegir la fuente y proyecto y después introducir el comando "Install-Package PackageName":


Esta consola de comandos es muy útil en determinadas situaciones, como por ejemplo, cuando se quiere instalar una versión específica de un paquete que no sea la última. Esto no es posible por el menú visual, pero sí por línea de comandos con el modificador "-Version" al comando "Install-Package".

Para instalar una actualización de un paquete, si está disponible, se verá en el apartado "Updates/Actualizaciones" dentro del "Nuget Package Manager"/"Manage Nuget Packages". Se pueden actualizar paquetes individuales o bien todos a la vez con el botón "Update All/Actualizar Todos". También se puede realizar la acción por la consola de comandos con "Update-Package PackageName":


Para desinstalar un paquete concreto, se selecciona dentro de la sección "Installed packages/Paquetes instalados" y se elige "Uninstall/Desinstalar", o bien con el comando "Uninstall-Package PackageName":


Y para finalizar, comentar que en nuget.org se encuentra no sólo el repositorio de todos estos paquetes, sino que se pueden buscar versiones anteriores de los mismos, consultar la documentación asociada y autores, y ver también el blog propio de nuget.org y documentación completa:




domingo, 31 de mayo de 2015

Tablas y jQuery

Es muy común para los que desarrollamos en web tener que usar tablas para mostrar datos.

Si la tabla no es muy grande, solemos darle unos estilos básicos y preocuparnos poco por ellas.

Pero qué pasa si la tabla empieza a crecer y crecer... Y nuestros usuarios quieren poder hacer búsquedas por los campos de las tablas, y además quieren ordenar por cualquier columna,...

Rápidamente empezamos a buscar algo en jQuery que nos ayude un poco, pero vemos que no hay nada en concreto. Lo que sí vemos es que hay muchos plugins sobre jQuery que nos ayudan sobre las tablas. 

Hoy vamos a ver uno de estos plugins: datatables (https://www.datatables.net/)

Y creo que lo mejor es que veamos los cambios con un ejemplo.

Supongamos que tenemos esta tabla:



Da miedo...

Vamos a añadir jquery y el plugin DataTables:

<script type="text/javascript" language="javascript" src="js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>

Y ahora vamos a invocar al plugin con estas líneas:

$(document).ready(function() {
$('#example').DataTable();
} );

Probamos y:


Esto ha mejorado bastante, no tiene estilos, pero ya tiene paginación, y un buscador sobre todas las columnas.

Si nos vamos a la documentación, vemos que hay una css por defecto que podemos usar, y unas imágenes que nos ayudarán a hacer la tabla más funcional.

Copiamos la carpetas "images" y la css que nos interesa. Añadimos css al código:

<link rel="stylesheet" type="text/css" href="css/jquery.dataTables.css">

Y volvemos a probar:


Esto ya es una tabla en condiciones, con la imágenes ya nos aparecen los controles para poder cambiar el orden de las columnas.

Sí, tenemos que cambiar algunas cosas: los textos por defecto, alguna alineación,... Pero hay  que reconocer que nos hemos quitado unas cuantas horas de programación de encima.

En nuestro repositorio podéis ver este ejemplo en los tres pasos que hemos hecho: 


Tenéis éste y muchos más ejemplos en la web del plugin (https://www.datatables.net), además de mucha documentación para indagar y personalizar mucho más vuestras tablas.

viernes, 15 de mayo de 2015

Powershell: Una breve introducción


Hace un tiempo, cuando en mi empresa realizamos la automatización de despliegues, utilizamos Powershell como lenguaje de scripting para la realización del proceso de despliegue del paquete de aplicación una vez generado.

Hasta entonces no tenía conocimiento de esta tecnología, e investigando un poco más descubrí todo lo potente que es y las posibilidades que ofrece para todos aquellos que trabajan con sistemas Windows.

Extraído de Microsoft Technet

"Windows PowerShell es un shell de línea de comandos basado en tareas y lenguaje de scripting diseñado especialmente para la administración del sistema. Basado en Microsoft .NET Framework, Windows PowerShell ayuda a los profesionales de TI a controlar y automatizar la administración de los sistemas operativos Windows y las aplicaciones que se ejecutan en Windows.

Para los programadores, Windows PowerShell usa un conjunto extensible de clases de .NET Framework que permiten crear cmdlets, proveedores, aplicaciones host y utilidades personalizados.
Los comandos de Windows PowerShell integrados en Windows, denominados cmdlets, permiten administrar los equipos de la empresa desde la línea de comandos. Los proveedores de Windows PowerShell permiten obtener acceso a almacenes de datos, como el Registro y el almacén de certificados, con la misma simplicidad con que se obtiene acceso al sistema de archivos. Además, Windows PowerShell cuenta con un completo analizador de expresiones y un lenguaje de scripting totalmente desarrollado."

Powershell ofrece los siguientes componentes:



El componente "Windows Powershell" es una consola de comandos en la que se pueden ejecutar las sentencias y scripts que se deseen, al estilo de la consola de comandos de Unix:


El componente "Windows Powershell ISE" (Integrated Scripting Environment) es una aplicación que permite ejecutar comandos y escribir, comprobar y depurar scripts en una sola interfaz gráfica de usuario, un compilador básico que ofrece Microsoft:



Powershell está disponible desde Windows XP, en sus versiones 1 y 2, y en Windows 7 y posteriores está disponible la versión 3.0. En Windows 8, Windows Server 2012 y posteriores ya viene instalado, para otras versiones de Windows no suele venir instalado, así que es necesario descargar e instalar la versión deseada (cuanto más reciente mejor).

Powershell ofrece los siguientes elementos de trabajo:

  1. Cmdlets
  2. Funciones
  3. Scripts

Cmdlets

Los comandos de Powershell se llaman Cmdlets (command-lets). Se reconocen por comenzar por un verbo (por ejemplo Get) seguido de un guión y un nombre descriptivo del comando. Vamos a ver un ejemplo sencillo desde la consola de comandos. Se desea listar el contenido de un directorio, basta con ejecutar el cmdlet "Get-ChildItem" pasando como parámetro el directorio a listar:



Si se desea ver la ayuda relacionada con el cmdlet anterior, basta con utilizar el cmdlet "Get-Help" y pasar como parámetro el cmdlet del que se desea obtener la ayuda:


Hay que destacar que es posible crear y utilizar cmdlets propios. 

Funciones

En Powershell también se pueden definir funciones, al igual que en otros lenguajes de programación, y también pueden recibir parámetros:



Una vez creada la función puede utilizarse:

Scripts

Finalmente, se pueden crear ficheros propios con funciones e instrucciones para ejecutar los comandos necesarios para llevar a cabo una acción. Estos ficheros deben almacenarse con extensión ".ps1". Al ser invocados pueden recibir parámetros de entrada y utilizarse durante el script.

En la imagen siguiente puede verse un sencillo script almacenado como "MiScript.ps1", que recibe un parámetro que se utiliza posteriormente al invocar la función "HolaMundo":


Una vez almacenado el fichero, se invoca desde la línea de comandos:


Con un parámetro relleno, se ve que se ejecuta la función "HolaMundo" definida en el script. En caso contrario devuelve "No es un parámetro válido":


Es de destacar en este script de ejemplo que se invoca una función de .Net (IsNullorEmpty(), del objeto String en el Namespace System). Esto nos da una idea de lo potente que puede llegar a ser nuestra programación en Powershell, ya que al propio ecosistema de Powershell (cmdlets disponibles, funciones, etc), se pueden importar o invocar Namespaces específicos del framework .Net y realizar algoritmos y funciones realmente complejas.

Ayuda y recursos

Para finalizar, remarcar que ésta ha sido una introducción muy breve a las características de Powershell. En Internet hay gran cantidad de sitios y tutoriales disponibles para aprender toda la potencia de este lenguaje. Tal el vez el sitio más potente sea Powershell.org.

En la Academia Virtual de Microsoft (Microsoft Virtual Academy) se pueden encontrar muchos cursos introductorios y avanzados de Powershell.



Otro día hablaremos de esta academia virtual y otros recursos de Microsoft que nos pueden echar una mano en nuestro aprendizaje.



lunes, 20 de abril de 2015

Maven entra en Juego



Hoy quiero hacer una pequeña introducción sobre Maven.

Aunque no es fundamental para un desarrollador de Java, sí que es un primer paso que nos facilitará la vida en cualquier proyecto que vaya creciendo.

Si quieres empezar a utilizar un nuevo framework o librería lo más normal del mundo es descargarte los ficheros necesarios, copiarlos a tu carpeta de librerías, incluirlas en tu proyecto y a codificar.

Esto que a priori, parece algo sencillo, se puede empezar a complicar: la librería A, puede requerir la libreria B, y ésta a su vez la C, pero B requiere también D, y esta última no se lleva bien con la última versión de C...

Y aquí llega Maven para ayudarnos.

¿Qué es Maven? 

Es una herramienta para gestionar y construir proyectos. Entre otras funcionalidades nos ayuda a gestionar dependencias, y eso es lo que vamos a ver en este artículo.

¿Cómo funciona?

Maven introduce el concepto de Artefacto: es una librería y todo lo necesario para que ésta funcione bien (dependencias, configuración,...)

Cuando en un proyecto se utiliza Maven, existe el fichero "pom.xml", aquí se introduce la lista de todas las librerías (dependencias).

Todas se descargan en un repositorio común de nuestro disco duro sin que tengamos que preocuparnos por ellas.

¿Cómo uso Maven? 

Ahora mismo esta herramienta ya está integrada en la mayoría de IDEs de desarrollo ("Eclipse" entre otros).

¿Un ejemplo?

En todo proyecto siempre solemos necesitar escribir logs, para eso normalmente yo utilizo la librería "log4j". 

La manera tradicional para usar esta librería sería ir a su web: http://logging.apache.org/log4j/1.2  para desacargarla. Pero con Maven lo que tenemos que hacer es buscar sus datos en el repositorio central de Maven.

Para esto vamos a buscarla en esta web: http://mvnrepository.com, buscamos log4j y después de un par clicks llegamos a esta URI: http://mvnrepository.com/artifact/log4j/log4j/1.2.17. En la pestaña de abajo podemos ver el formato de Maven para utilizar esta dependencia:

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

El proyecto "MavenLogExample" esta cargado en Eclipse, inicialmente está configurado sin Maven y tiene la librería dentro del proyecto.

Tiene una clase y en su método Main sólo hay estas líneas:

try {                          
    PropertyConfigurator.configure("log4j.properties");
    log.info("Sistema de log iniciado");                        

} catch (Exception e) {
    e.printStackTrace();  
}

Dentro del proyecto esta la carpeta "lib" que contiene el .jar de "log4j".

Vamos a empezar a usar Maven en este proyecto y a quitarnos la librería del proyecto (con esto ahorramos mucho espacio, imaginaros un proyecto con cien librerías).

Primer paso: darle al proyecto naturaleza Maven

Seleccionamos el proyecto, botón derecho del ratón, pulsamos "Configure" y "Convert to Maven Project".




Nos aparece esta pantalla:



Podemos rellenar los datos "name" y "description" o pulsar "Finish".

Tardará unos segundos en generarnos el fichero "pom.xml". Y aparecerá en la pantalla así:


Si queremos ver cómo es el fichero, podemos pinchar en la última pestaña inferior: "pom.xml"

Veremos que contiene algo parecido a esto:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>MavenLogExample</groupId>
  <artifactId>MavenLogExample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>


Segundo Paso: configuración de nuestra librería

Nosotros vamos a añadir la dependencia de "log4j" dentro de <dependencies/> que se escribe después de </build> . Nos quedará así:

<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MavenLogExample</groupId>
<artifactId>MavenLogExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>

Ahora ya podemos borrar la librería del proyecto y eliminar su dependencia de la configuración.


Si volvéis a ejecutar veréis que todo funciona perfectamente.

Tenéis este proyecto en nuestro repositorio público: https://bitbucket.org/tecnificados/public

Hay dos commits: el inicial sin Maven y el segundo con Maven y sin la librería de log dentro del proyecto.

Espero que os sea útil.