Cuando realizamos proyectos Java siempre tenemos varias tareas que realizar. La primera suele ser crear una estructura de directorios pensando en un hueco para los archivos fuentes, otro para iconos, ficheros de configuración o datos, directorio para dejar los .class o el .jar, para dejar el javadoc, etc, etc.
También existen otras tareas que realizamos con cierta frecuencia, como borrar los .class, compilar, generar la docume
Seguramente también dependamos de otros jar como, como drivers debase de datos, JUnit para clases de test, log4j para nuestra salida de log, etc, etc. Tendremos que copiar todos esto jar externos en algún sitio de nuestro proyecto e incluirlos.
Una primera herramienta que nos ayuda un poco con todo esto es ant. Sin embargo, con ant no tenemos todas estas tareas hechas y debemos reescribir posiblemente nuestro fichero build.xml (el de tareas que se ejecutan con ant) de un proyecto a otro. También tendremos que copiar los jar externos de los que dependemos.
Para todo esto llegó hace bastante tiempo Maven.
Según la wikipedia Maven es una herramienta de software para la gestión y construcción de proyectos Java creada por Jason van Zyl, de Sonatype, en 2002. Es similar en funcionalidad a Apache Ant (y en menor medida a PEAR de PHP y CPAN de Perl), pero tiene un modelo de configuración de construcción más simple, basado en un formato XML. Estuvo integrado inicialmente dentro del proyecto Jakarta pero ahora ya es un proyecto de nivel superior de la Apache Software Foundation.
Vamos manos a la obra:
Instalando Maven en windows
- Debemos descargarnos el .zip de aquí http://maven.apache.org/download.html en mi caso la versión apache-maven-3.0.4-bin.zip
-
Una vez descargado lo descomprimimos, yo lo he hecho «C:\Users\Jesus» es decir, en mi directorio de usuario.
-Añadimos a la variable Path la ruta» C:\Users\Jesus\apache-maven-3.0.4\bin» –> Para ello
inicio->equipo (clic derecho)-> propiedades-> Configuración avanzada del sistema nos aparecerá la siguiente pantalla
Aquí es donde debemos añadir la ruta
Comprobamos que todo ha ido bien. Para ello abrimos un cmd y escribimos
>mvn --version
Creando proyectos
Especificar un archeotype en Maven es como decirle que plantilla de proyecto queremos utilizar.
Por ejemplo, para crear nuestro proyecto java basta con hacer:
>mvn archetype:create -DgroupId=com.PRS.demoapp -DartifactId=PRSNegocio
El resultado de ejecutar este comando es la siguiente estructura de directorios y ficheros:
PRSNegocio
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- PRS
| `-- demoapp
| `-- App.java
`-- test
`-- java
`-- com
`-- PRS
`-- demoapp
`-- AppTest.java
Esta es la estructura estandar. Lo más molón de todo esto es el fichero pom.xml. Es un fichero que contiene datos de configuración de nuestro proyecto, como dependencias con otros jar, tipos de informes que queremos en la página web de nuestro proyecto, etc.. Inicialmente contiene una serie de cosas por defecto que podremos cambiar si lo deseamos.
Fichero Pom.xml
Con packaging
se indica el tipo de empaquetado que hay que hacer con el proyecto. Podemos usar jar, war, ear, pom.
Con version
se indica la versión del proyecto con la que estamos trabajando. Al indicar SNAPSHOT
se quiere decir que es una versión evolutiva, es decir que estamos trabajando para obtener al versión 1.0
.
También podemos ver como dentro de dependencies se describen las dependencias del proyecto. Ahora tenemos una dependencia de junit para poder compilar y ejecutar los tests. Dentro de la descripción de las dependencias es interesante destacar el elemento scope que indica que tipo de librería se trata. Podemos distinguir:
- compile – es el valor por defecto. Se utiliza en todos los casos (compilar, ejecutar, …).
- provided – también se utiliza en todos los casos, pero se espera que el jar sea suministrado por la JDK o el contenedor. Es decir, no se incluirá al empaquetar el proyecto, ni en el repositorio.
- runtime – no se utiliza para compilar, pero si es necesario para ejecutar.
- test – Sólo se utiliza para compilar o ejecutar los test.
- system – es similar a provided, pero eres tu el que tiene que suministrar el jar. No se incluirá al empaquetar el proyecto, ni en el repositorio.
Bueno ya hemos visto el fichero pon.xml y ¿ahora que?
En este fichero es donde definimos las dependencias de nuestro proyecto, en nuestro caso esta definida una dependencia para crear Test con JUnit, pero podríamos definir una dependencia con el driver de MySQL.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.3</version>
<scope>runtime</scope>
</dependency>
Comandos básicos (compilar, ejecutar…)
Ahora mismo, sin haber escrito ni una línea ya podemos hacer todas las tareas habituales (esto con Ant no sería tan fácil ;):
$ mvn compile
– compila el proyecto y deja el resultado en target/classes$ mvn test
– compila los tests y los ejecuta$ mvn package
– empaqueta el proyecto y lo dejará en taget/PRSNegocio-1.0-SNAPSHOT.jar$ mvn install
– guarda el proyecto en el repositorio$ mvn clean
– borra el directorio de salida (target)
Estas tareas son estándar, por lo que un desarrollador puede saltar de un proyecto a otro y siempre sabrá compilar, empaquetar, …
Para saber más sobre el ciclo de vida de Maven se puede leer http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Para finalizar
Para crear un proyecto web, solo tendríamos que cambiar el archeotype así:
>mvn archetype:create -DgroupId=com.PRS.demoapp -DartifactId=PRSWeb -DarchetypeArtifactId=maven-archetype-webapp
O para un portlet de Liferay
>mvn -e archetype:create -DgroupId=com.PRS.portlet -DartifactId=maven-portlet -DarchetypeArtifactId=liferay-portlet-archetype -DarchetypeGroupId=com.liferay.maven.archetypes -DarchetypeVersion=6.0.2-SNAPSHOT
Este post es solo una introducción, en otro post hablaremos sobre el plugin M2eclipse para integrar todo esto en eclipse de manera más fácil.
Referencias
http://www.chuidiang.com/java/herramientas/maven.php
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=maven
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mavenliferay
http://milen.commsen.com/2009/10/creating-liferay-portlet-with-liferay-maven-sdk.html
hola!!, me produce un error:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2
.4:create (default-cli) on project standalone-pom: Unable to parse configuration
……
……
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mi versión es;
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:4
7+01:00)
Maven home: C:\Program Files\apache-maven-3.3.9
Java version: 1.7.0_75, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_75\jre
Default locale: es_MX, platform encoding: Cp1252
OS name: «windows 7», version: «6.1», arch: «x86», family: «windows»
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
al final lo logre cambiando:
mvn archetype:generate -DgroupId=com.PRS.demoapp -DartifactId=PRSNegocio
solo cambie la palabra «create» por «generate» a que se debe?
Me gustaMe gusta