Primeros pasos con Maven En nuestros proyectos java siempre tenemos varias tareas que realizar. La primera suele ser crear una estructura de directorios para nuestro proyecto, con un hueco para los fuentes, otro para iconos, ficheros de configuración o datos, directorio para dejar los .class o el .jar, para dejar el javadoc, etc, etc. Después, tenemos más tareas que realizamos con cierta frecuencia, como orrar los .class, compilar, generar la documentción de javadoc, el jar, incluso generar documentación !e para pulicar nuestro traajo. "osilemente acaemos haciendo algunos scripts o ficheros .at para todas estas tareas. #i nuestro programa es grande, incluso es posile que dependamos de otros jar e$ternos, como drivers dease de datos, %&nit para clases de test, log'j para nuestra salida de log, etc, etc. (endremos que copiar todos esto jar e$ternos en alg)n sitio de nuestro proyecto e incluirlos. &na primera herramienta que nos ayuda un poco con todo esto es ant ant.. #in emargo, con ant no ant no tenemos todas estas tareas hechas y deemos reescriir posilemente nuestro fichero build.xml *el build.xml *el de tareas que se ejecutan con ant+ ant+ de un proyecto a otro. (amién (amién tendremos que copiar los jar e$ternos de los que dependemos. #i vamos a una herramienta más evolucionada, llegamos a maven. maven . Maven, Maven, con comandos simples, nos crea una estructura de directorios para nuestro proyecto con sitio para los fuentes, los iconos, ficheros de configuración y datos, etc, etc. #i a maven le maven le indicamos qué jar e$ternos necesitamos, es capaz de ir a uscarlos a internet y descargarlos por nosotros. #in necesidad prácticamente de configurar nada, mavensae mavensae como orrar los .class, compilar, generar el jar, generar el javadoc y generar un documentación !e con montones de informes *métricas, código duplicado, etc+. Maven se Maven se encarga de pasar automáticamente nuestros test de pruea cuando compilamos. ncluso maven nos maven nos genera un zip de distriución en el que van todos los jar necesarios y ficheros de configuración de nuestro proyecto. En este tutorial vamos a dar nuestros primeros pasos con Maven. Maven .
¿Qué es Maven? -a lo hemos contado más o menos, pero para que quede claro. Maven es Maven es una herramienta de lnea de comandos, sin interface gráfica ni nada que se le parezca, que nos ayuda a crear los directorios de nuestro proyecto y con las tareas haituales que se realizan en él, como compilado, generar jar, documentación, distriuir, dependencias con otros jar, etc. Instalar maven
/ntes de que te pongas a hacer nada, necesitas tener una cone$ión de internet. Maven la Maven la primera vez que se ejecuta empiza a ajarse cosas y si no puede, no sirve para nada. /unque la instalación que cuento aqu es para !indo!s, supongo que en linu$ es muy similar. 0asta ajarse el zip de maven, maven , desempaquetarlo y poner su directorio bin en el bin en path de usqueda de ejecutales. En mi caso lo he desempaquetado en C:\, C:\, con lo que se me ha creado el directorio C:\maven-2..! "ara meter el sudirectorio bin bin en en el path de ejecutales, le doy con el otón derecho del ratón sore el icono de 12i "31 y elijo 1"ropiedades1, 1/vanzado1 y 14ariales de Entorno1. 0usco 1"ath1 y le doy a 1Editar1. /5ado al final 16378maven9:.;.'8in1 *con punto y coma delante, para separlo de lo que ya haya escrito+ En linu$ supongo que es cuestión de coger el fichero .login, .profile, .ashrc o el que sea seg)n el uni$
?2E del usuario y a5adirle al final la lnea "/(>@="/ "/(>@="/(>66 mvn --version Maven version: 2.0.4 $ mvn --version Maven version: 2.0.4
Es posile que la primera vez que lo ejecutemos tarde un rato, ya he comentado que cada vez que ejecutamos un comando nuevo de maven, maven, tiene que ajarse cosas de internet. Crear un pro"ecto El primer paso que podemos hacer con maven es crear un pro"ecto desde pro"ecto desde cero. El comando de maven que maven que tenemos que ejecutar es mvn archetype:create -DgroupId=chuidiang.ejemplos DartifactId=EjemploMaven
4eamos los parámetros
•
arc#et"pe:create es el comando
•
aplicación !e, aunque tamién se puede+ -$%roupId&chuidiang.ejemplos es el conjunto de proyectos al que pertenece nuestro proyecto. "or ejemplo, yo puedo meter todos mis programas de ejemplo en un grupo que llamaré 1chuidiang.ejemplos 1. Este nomre que pongamos aqu va a servir de paquete inicial para todas las clases del proyecto. (odos los proyectos maven deen pertenecer a un grupo, aunque sea )nico para él, que se
•
denominará %roupId. -$arti'actId& EjemploMaven es el nomre que queramos dar al proyecto. Maven creará un directorio con este nomre y el jar que genere para el proyecto tendrá tamién este nomre. (odos los proyectosmaven tienen un nomre para identificarlos, que se denomirá arti'actId
&na vez ejecutado este comando, Maven empezará a ajarse cosas de internet cuando lo ejecutemos por primera vez *en los pró$imos proyectos ya no necesita ajarse nada+ y creará una esctructura de directorios y ficheros como la siguiente EjemploMaven +---src ¦
+---main
¦
¦
¦
¦
¦
¦
¦
¦
¦
+---test
¦
+---java
//Para nuestros fuentes
+---chuidiang +---ejemplos +---App.java +---java
¦ ¦ ¦
//Para test de Junit
+---chuidiang +---ejemplos +---AppTest.java
+---pom.xml
3rea un directorio ()emploMaven para nuestro proyecto. Dentro un fichero pom.xml que 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 !e de nuestro proyecto, etc.. nicialmente contiene una serie de cosas por defecto que podremos camiar si lo deseamos. 3rea dos sudirectorios, uno src y otro test. Dentro de src deemos meter todo lo que sean fuentes y ficheros de configuración o datos propios del proyecto. En la parte de test deemos meter todos nuestros fuentes de pruea, clases de test de %&nit, ficheros de datos o de configuración de prueas, etc. Es decir, en src va lo que es del proyecto y en test lo que nos ayude a proar el proyecto, pero no sea propio del proyecto.
En amos casos, crea un directorio )ava. /h deajo es donde van los fuentes java. En paralelo a estos directorios )ava y si lo necesitamos, deemos crear nosotros a mano otros directorios. El nomre de estos nuevos directorios es standard en maven. "ara un proyecto normalito los más )tiles puede ser
•
con'i% para ficheros de configuración, iconos, etc resources para ficheros que queramos que se metan dentro del jar. Maven meterá
•
automáticamente todo lo que haya en este sudirectorio dentro del jar assembl" para la configuración que queramos en nuestro zip de distriución.
•
En http7<
Esto creará un directorio tar%et justo deajo de ()emploMaven y ah un sudirectorio classes donde meterá todos los .class de nuestro compilado EjemploMaven +---src ¦
+---main
¦
¦
¦
¦
¦
¦
¦
+---test
¦ ¦ ¦
+---java +---chuidiang +---ejemplos +---java +---chuidiang +---ejemplos
+---target
+---classes
+---chuidiang +---ejemplos
//Aqui van los ficheros .class
enerar el )ar "ara generar el jar, es igual de sencillo mvn package
Esto primero compilará si es necesario, pasará las clases de test de %&nit y si no hay fallos, meterá en el directorio tar%et nuestro jar, que por defecto tendrá un nomre tan feo como este EjemploMaven-1.0-SNAPSHOT.jar
0ien, ()emploMaven es como nosotros queremos que se llame seg)n indicamos en el arti'actId. Maven a5ade un C.; para indicar que es la versión C.; de nuestro proyecto. Este n)mero aparece y podemos camiarlo en el fichero pom.xml. Lo de -/*P01+ es para indicar que esta versión está en construcción, que no es definitiva. Maven irá guardando todas las versiones del jar que generemos e irá sustituyendo -/*P01+ por la fecha y hora de la construcción. Esto de -/*P01+ tamién aparece en el pom.xml y podemos quitarlo cuando creamos que tenemos la versión definitiva. Dentro de jar se meterán automáticamente todos los ficheros que tengamos deajo del directorio resources epositorios Maven &na de las grandes ventajas de maven son los repositorios *almacenes+ de ficheros jar que se crea. #i miras en http7<
301M(4.m2 en uni$
/dicionalmente podemos configurar maven para que use más repositorios, tanto de internet como otros que montemos internamente en nuestra red local si la tenemos. "or ejemplo, en internet tienes otro repositorio con jars independiente de maven en http7< 4.0.0 chuidiang.ejemplos EjemploMaven jar 1.0-SNAPSHOT Maven Quick Start Archetype http://maven.apache.org
junit
junit
3.8.1
test
4emos que hay un apartado dependencies y que dentro tiene un dependenc" de junit. Esto es la opción por defecto. "ara esta dependencia de %unit hay que dar el %roupId * junit+, el arti'actId * junit otra vez+, la versi5n que deseamos *.F.C+ y cuándo la necesitamos *en los test+ maginemos que queremos el lo%!), pero para nuestro programa, no para el test.
Bos vamos al respositorio oficial de maven http7< 4.0.0 chuidiang.ejemplos EjemploMaven jar 1.0-SNAPSHOT Maven Quick Start Archetype http://maven.apache.org
log4j
log4j
1.2.13
compile
junit
junit
3.8.1
test
Esta vez hemos puesto 1compile1 en vez de 1test1 para indicar que lo necesitamos al compilar nuestro proyecto y no al hacerle el test. 3on esto está todo listo. -a podemos usar en nuestros fuentes el log'j. 3uando compilemos la primera vez, maven mirará si ya tenemos log'j en nuestro repositorio local y si no lo tenemos, se irá a uscarlo a internet y lo ajará. El log'j quedará en nuestro repositorio local. Inte%raci5n con los I$( 0ueno, todo esto está muy ien, pero si yo traajo con un DE, como eclipse, ntelli% DE/, neteans o algo as, Gcómo encuentro ahora los jar en un sitio tan escondidoH. 1ácil1
entre comillas. Maven es capaz de generar un proyecto de eclipse, de idea y creo que de neteans. 0asta ejecutar esto mvn eclipse:eclipse mvn idea:idea
luego, desde nuestro DE, creamos un proyecto importando o leyendo el fichero de proyecto que ha generado maven. Digo 1ácil1 entre comillas, porque al menos para eclipse, hay que hacer algo más. Deemos definir dentro de eclipse la variale M26(P1 apuntando a nuestro repositorio local de maven. En la 3hu!iIi puedes ver los detalles de cómo se coge con eclipse un proyecto maven. "or lo que he visto en ntelli%, es más inmediato y no hay que hacer nada especial. (amién hay plugins en nuestros DEs que hacen más fácil el traajo con maven, de forma que desde nuestro DE podamos ejecutar las tareas maven. En codehaus tienes los plugins para los cuatro DEs más conocidos7 eclipse, neteans, ntelli% y %0uilder. 7levar nuestro )ar a los repositorios maven #i queremos meter nuestro jar en el repositorio maven de jars local, es sencillo. 0asta hacer mvn install
Esto compilará si es necesario nuestros fuentes, les pasará los test, generará el jar y lo copiará en nuestro repositorio local de jars, en nuestro pc. Esta operación hace que ese jar esté disponile para otros proyectos maven que tengamos en nuestro ordenador. Es )til, por tanto, para proyectos maven que sean lireras nuestras que queramos usar en varios proyectos. #i hemos configurardo un repositorio en red com)n a varios programadores en varios ordenadores, el comando es igual de simple mvn deploy
Esto hace todo lo que hace install, incluido el install y luego pone nuestro jar en ese repositorio com)n en red. Esto lo pone a disposición de todos los programadores del equipo. Lo de -/*P01+ en la versión tiene aqu su gracia. #i dependemos de un jar que tenga -/*P01+, cada vez que compilemos, aunque ese jar esté en nuestro repositorio local, maven ira a uscarlos a los repositorios comunes o de internet, para ver si hay una versión de fecha más moderna. #i la hay, se la ajará. "or tanto, suele ser )til en un
equipo de traajo mantener la 1coletilla1 -/*P01+ en los jar que todava están en desarrollo y sufren camios frecuentes. #i no ponemos -/*P01+, una vez ajado el jar a nuestro repositorio local, maven B? se preocupará de uscar si hay versiones más modernas en los repositorios remotos. enerar documentaci5n Jenerar el javadoc es fácil tamién entre comillas. Lo primero es que deemos editar el fichero pom.xml para indicarle que queremos este tipo de documentación. "uede quedar as 4.0.0 chuidiang.ejemplos EjemploMaven jar 1.0-SNAPSHOT Maven Quick Start Archetype http://maven.apache.org
junit
junit
3.8.1
test
org.apache.maven.plugins
maven-javadoc-plugin
Luego ya es sencillo. 0asta ejecutar mvn javadoc:javadoc
y maven nos generará en target un directorio tar%et\site\apidocs y dentro de él metera el javadoc. #i ejecutamos mvn site:site
generará en tar%et\site una documentación !e por defecto, incluido el )avadoc. "or supuesto, en el pom.xml y en algunos ficheros adicionales de configuración se podra personalizar. El aspecto de esa documentación por defecto puedes verlo en la página de maven, ya que por supuesto, la !e de maven ha sido generada con maven. (amién en la página de codehause o en la de freehep. Para 'inali,ar Esto es lo ásico para hacerse una idea de qué es maven y empezar con ello. >ay muchsimas más cosas que se pueden configurar en maven, pero nos alargaramos demasiado. "or ejemplo, algunas de las cosas que se pueden hacer con maven7 •
Jenerar un .jar con los fuentes
•
Jenerar en formato !e una documentación similar al javadoc, pero con los
•
fuentes en colorines. Jenerar un .zip con todos los jar y ficheros de configuración, para distriuir nuestro
•
programa &n análisis de métricas de nuestro código.
•
&n análisis de coertura de los test, indicando qué lneas de código se han
•
ejecutado o no en los test. "asar el rmic a los .class que lo necesitan
•
Ejecutar desde maven tareas de ant
•
"reparar una distruución etiquetando todos los fuentes en cvs.
•
3rear un proyecto maven compuesto de varios suproyectos
•
3rear un gran jar que tenga todos los .class, tanto los nuestros como los de los jar ajenos. Evitamos as distriuir varios jar con nuestra aplicación.
En la 3hu!iIi tienes las cosas de maven con las que me he ido tropezando y si no, en la página de maven lo tienes supuestamente todo. (ampoco me he metido, porque no lo controlo, en las utilidades para aplicaciones !e con E%0s, pero las tiene. 0asta crear un proyecto indicando que es una aplicación !e y cuando le demos a compilar, nos generará los ficheros ear, !ar o los que sean.
Creación de un proyecto Java desde Maven 28*9 >emos visto en el anterior post ntroducción a Maven un visión general sore lo que es Maven y sus principales caractersticas. Maven permite crear proyectos desde lnea de comandos o ien desde nuestro DE favorito. "ero antes recordar lo que era un arquetipo, un arquetipo es un artefacto sencillo que contiene el esqueleto *prototipo+ de un tipo de proyecto que queremos construir. Maven nos va a facilitar la
creación
de
nuevos
proyectos
utilizando
el
concepto
de
arquetipo.
Línea de comandos.
"rimero vamos a crear nuestro proyecto desde lnea de comandos. "ara ello vamos a modificar la siguiente lnea en función del tipo de proyecto que queramos crear. 1 mvn archetype:generate
2 -DarchetypeGroupId=
3
-DarchetypeArtifactId=
4
-DarchetypeVersion=
-DgroupId=
5 -DartifactId=
6
El arquetipo más sencillo que podemos utilizar en Maven para crear un proyecto es maven9 archetype9quicIstart. /s pues la lnea que ejecutaremos será la siguiente. 1 mvn archetype:generate
2 -DarchetypeGroupId=org.apache.maven.archetypes
3
-DarchetypeArtifactId=maven-archetype-quickstart
4
-DarchetypeVersion=R!A"
-DgroupId=com.hop#croft.e$amp%e
5 -DartifactId=&uickstart$amp%e
6
La salida que generará por consola será la siguiente. En primer lugar se ajará los plugins, dependencias ó recursos que se necesiten *y que no estén ya en nuestro repositorio local+.
1
hop#croft-e'()**)(c*+maven Ivan, mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DartifactId=&uickstart$amp%eI/01 "canning for pro2ects...
2
Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-site-p%ugin4#.(.'4maven-site-p%u
3
-
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-site-p%ugin4#.(.'4maven-site-p%ug
Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-antrun-p%ugin4'.4maven-antrun-p
4 Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-antrun-p%ugin4'.4maven-antrun-p%
5 Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-re%ease-p%ugin4#.(4maven-re%ease
6
7
8
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-re%ease-p%ugin4#.(4maven-re%ease-
Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4re%ease4maven-re%ease4#.(4maven-re%ease-#.(.po
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4re%ease4maven-re%ease4#.(4maven-re%ease-#.(.pom
Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-archetype-p%ugin4maven-metadata.
9 Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-archetype-p%ugin4maven-metadata.$
10 Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-archetype-p%ugin4#.(4maven-arche
11
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-archetype-p%ugin4#.(4maven-archet
12
Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4archetype4maven-archetype4#.(4maven-archetype-
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4archetype4maven-archetype4#.(4maven-archetype-#.
13 Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-archetype-p%ugin4#.(4maven-arche
14 Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4p%ugins4maven-archetype-p%ugin4#.(4maven-archet
15
I/01
16
I/01 ------------------------------------------------------------------------
17
I/01 8ui%ding ?aven "tu* @ro2ect 5o @0?9 '
I/01 ------------------------------------------------------------------------
18 I/01
19 I/01 +++ maven-archetype-p%ugin:#.(:generate 5defau%t-c%i9 standa%one-pom +++
20
21
22
I/01
I/01 BBB maven-archetype-p%ugin:#.(:generate 5defau%t-c%i9 standa%one-pom BBB
I/01
I/01 --- maven-archetype-p%ugin:#.(:generate 5defau%t-c%i9 standa%one-pom ---
23
Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4archetype4archetype-common4#.(4archetype-commo
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4archetype4archetype-common4#.(4archetype-common
24 Do3n%oading: http:44repo'.maven.org4maven#4net4sourceforge42chardet42chardet4'.(42chardet-'.(.pom
25 Do3n%oaded: http:44repo'.maven.org4maven#4net4sourceforge42chardet42chardet4'.(42chardet-'.(.pom 5# 78 at
26
27
28
Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4shared4maven-invoker4#.(.'(4maven-invoker-#.(.
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4shared4maven-invoker4#.(.'(4maven-invoker-#.(.'
Do3n%oading: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-ve%ocity4'.'.4p%e$us-ve%ocity-'.'..
Do3n%oaded: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-ve%ocity4'.'.4p%e$us-ve%ocity-'.'..
29 Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4archetype4archetype-common4#.(4archetype-commo
30 Do3n%oading: http:44repo'.maven.org4maven#4net4sourceforge42chardet42chardet4'.(42chardet-'.(.2ar
31
32
33
Do3n%oading: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-ve%ocity4'.'.4p%e$us-ve%ocity-'.'..
Do3n%oading: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-interactivity-api4'.(-a%pha-)4p%e$us
Do3n%oading: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-uti%s4'.).4p%e$us-uti%s-'.)..2ar
Do3n%oaded: http:44repo'.maven.org4maven#4net4sourceforge42chardet42chardet4'.(42chardet-'.(.2ar 5#; 78 at
34 Do3n%oading: http:44repo'.maven.org4maven#4org4apache4maven4shared4maven-invoker4#.(.'(4maven-invoker-#.(.
35 Do3n%oaded: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-interactivity-api4'.(-a%pha-)4p%e$us-
36
Do3n%oaded: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-ve%ocity4'.'.4p%e$us-ve%ocity-'.'..2
37
Do3n%oaded: http:44repo'.maven.org4maven#4org4codehaus4p%e$us4p%e$us-uti%s4'.).4p%e$us-uti%s-'.)..2ar 5#
38
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4shared4maven-invoker4#.(.'(4maven-invoker-#.(.'
Do3n%oaded: http:44repo'.maven.org4maven#4org4apache4maven4archetype4archetype-common4#.(4archetype-common
39
40
41
42
43
44
45
46
47
Lo siguiente será crear el proyecto a partir del arquetipo indicado. /unque le hemos dicho a partir de que arquetipo queremos crear nuestro proyecto, Maven nos muestra una lista de arquetipos disponiles. 1
I/01 Generating pro2ect in Interactive mode
I/01 o archetype defined. Csing maven-archetype-quickstart 5org.apache.maven.archetypes:maven-archetype
2 hoose archetype:
3 ': remote -+ doc*k$-quickstart-archetype 5-9
4
5
6
#: remote -+ mu%ti 5-9
: remote -+ simp%e 5-9
6: remote -+ apparat-archetype-asm 5-9
): remote -+ apparat-archetype-tdsi 5-9
7 ;: remote -+ gquery-archetype 5-9
8 >: remote -+ gquery-p%ugin-archetype 5-9
9
10
11
: remote -+ 2d*c-proc-archetype 5reates simp%e pro2ect 3ith 2d*c-proc support9
<: remote -+ %iferay-%ayouttp%-archetype 5@rovides an archetype to create !iferay %ayout temp%ates.9
'(: remote -+ %iferay-port%et-archetype 5@rovides an archetype to create !iferay port%ets.9
...
12 '((: remote -+ maven-archetype-mo2o 5An archetype 3hich contains a samp%e a samp%e ?aven p%ugin.9
13 '(': remote -+ maven-archetype-p%ugin 5An archetype 3hich contains a samp%e ?aven p%ugin.9
14
15
16
'(#: remote -+ maven-archetype-p%ugin-site 5An archetype 3hich contains a samp%e ?aven p%ugin site. Ehis ar
e$isting ?aven p%ugin pro2ect.9
'(: remote -+ maven-archetype-port%et 5An archetype 3hich contains a samp%e F"R-#; @ort%et.9
'(6: remote -+ maven-archetype-profi%es 5-9
17 '(): remote -+ maven-archetype-quickstart 5An archetype 3hich contains a samp%e ?aven pro2ect.9
18
19
20
21
'(;: remote -+ maven-archetype-site 5An archetype 3hich contains a samp%e ?aven site 3hich demonstrates som
22
A@E HDoc and /?! and demonstrates ho3 to i'n your site. Ehis archetype can *e %ayered
23
upon an e$isting ?aven pro2ect.9
....
24 ': remote -+ spring-osgi-*und%e-archetype 5"pring 0"Gi ?aven# Archetype9
25 #: remote -+ spring-3s-archetype 5"pring e* "ervices ?aven# Archetype.9
26
27
28
: remote -+ syncope-archetype 5-9
6: remote -+ trai%s-archetype 5-9
): remote -+ trai%s-secure-archetype 5-9
;: remote -+ tynamo-archetype 5-9
29 >: remote -+ 3icket-sca%a-archetype 5-9
30 : remote -+ 3ik*ook.archetype 5-9
31
<: remote -+ circumf%e$-archetype 5-9
32
<(: remote -+ 2avg-minima%-archetype 5-9
33
hoose a num*er: '():
34
35
36
#eleccionado el arquetipo, le decimos a Maven a través del asistente el resto de información de nuestro proyecto. 1
hoose version:
': '.(-a%pha-'
2 #: '.(-a%pha-#
3
: '.(-a%pha-
6: '.(-a%pha-6
4 ): '.(
5 ;: '.'
6
hoose a num*er: ;: ;
7
8
9
Define va%ue for property JgroupIdJ: : com.hop#croft.e$amp%e
Define va%ue for property JartifactIdJ: : &uickstart$amp%e
Define va%ue for property JversionJ:
'.(-"A@"K0E: :
Define va%ue for property JpackageJ:
com.hop#croft.e$amp%e: :
10
11 onfirm properties configuration:
12
13
14
groupId: com.hop#croft.e$amp%e
artifactId: &uickstart$amp%e
version: '.(-"A@"K0E
package: com.hop#croft.e$amp%e
15 L: :
16 I/01 ----------------------------------------------------------------------------
17
I/01 Csing fo%%o3ing parameters for creating pro2ect from 0%d 5'.$9 Archetype: maven-archetype-quickstart
18
I/01 ----------------------------------------------------------------------------
19
I/01 @arameter: groupId Va%ue: com.hop#croft.e$amp%e
I/01 @arameter: packageame Va%ue: com.hop#croft.e$amp%e
20 I/01 @arameter: package Va%ue: com.hop#croft.e$amp%e
21
I/01 @arameter: artifactId Va%ue: &uickstart$amp%e
22
I/01 @arameter: *asedir Va%ue: 4Csers4Ivan4Desktop4maven
23
I/01 @arameter: version Va%ue: '.(-"A@"K0E
I/01 MMMMMMMMMMMMMMMMMMMMM nd of de*ug info from resources from generated @0? MMMMMMMMMMMMMMMMMMMMMMM
24 I/01 pro2ect created from 0%d 5'.$9 Archetype in dir: 4Csers4Ivan4Desktop4maven4&uickstart$amp%e
25
26
27
28 I/01 ------------------------------------------------------------------------
29 I/01 8CI!D "C""
30 I/01 ------------------------------------------------------------------------
31
I/01 Eota% time: #:'.('6s
32
I/01 /inished at: Eue Apr #; (':#:#6 "E #(''
I/01 /ina% ?emory: >?4'?
33 I/01 ------------------------------------------------------------------------
34 ivan-e'()**)(c*:maven Ivan,
35
36
37
38
(endremos un proyecto con el nomre KuicIstart formado por una clase normal *el tipco hola 2undo+ y por una clase de (est sencilla. #i queremos compilarla y proarla, simplemente tendremos que ejecutar mvn install. 1
ivan-e'()**)(c*:&uickstart$amp%e Ivan, mvn c%ean insta%%
I/01 "canning for pro2ects...
2 I/01
3 I/01 ------------------------------------------------------------------------
4
5
6
I/01 8ui%ding &uickstart$amp%e '.(-"A@"K0E
I/01 ------------------------------------------------------------------------
I/01
7
I/01 --- maven-c%ean-p%ugin:#.6.':c%ean 5defau%t-c%ean9 &uickstart$amp%e ---
I/01
8 I/01 --- maven-resources-p%ugin:#.6.:resources 5defau%t-resources9 &uickstart$amp%e ---
9 I/01 Csing JCE/-J encoding to copy fi%tered resources.
10
11
12
I/01 skip non e$isting resourceDirectory 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4src4main4resources
I/01
I/01 --- maven-compi%er-p%ugin:#..#:compi%e 5defau%t-compi%e9 &uickstart$amp%e ---
I/01 ompi%ing ' source fi%e to 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4target4c%asses
13 I/01
14 I/01 --- maven-resources-p%ugin:#.6.:testResources 5defau%t-testResources9 &uickstart$amp%e ---
15
16
17
I/01 Csing JCE/-J encoding to copy fi%tered resources.
I/01 skip non e$isting resourceDirectory 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4src4test4resources
I/01
I/01 --- maven-compi%er-p%ugin:#..#:testompi%e 5defau%t-testompi%e9 &uickstart$amp%e ---
18 I/01 ompi%ing ' source fi%e to 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4target4test-c%asses
19 I/01
20
I/01 --- maven-surefire-p%ugin:#.>.':test 5defau%t-test9 &uickstart$amp%e ---
21
I/01 "urefire report directory: 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4target4surefire-reports
22
23
-------------------------------------------------------
E " E "
24 -------------------------------------------------------
25
26
Running com.hop#croft.e$amp%e.AppEest
Eests run: ' /ai%ures: ( rrors: ( "kipped: ( Eime e%apsed: (.(## sec
27
28
Resu%ts :
29
30
31
32
33 Eests run: ' /ai%ures: ( rrors: ( "kipped: (
34
35 I/01
36 I/01 --- maven-2ar-p%ugin:#..':2ar 5defau%t-2ar9 &uickstart$amp%e ---
37
38
39
I/01 8ui%ding 2ar: 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4target4&uickstart$amp%e-'.(-"A@"K0E.2ar
I/01
I/01 --- maven-insta%%-p%ugin:#..':insta%% 5defau%t-insta%%9 &uickstart$amp%e ---
I/01 Insta%%ing 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4target4&uickstart$amp%e-'.(-"A@"K0E.2ar to
40 I/01 Insta%%ing 4Csers4Ivan4Desktop4maven4&uickstart$amp%e4pom.$m% to 4Csers4Ivan4.m#4repository4com4ho
41 I/01 ------------------------------------------------------------------------
42
43
44
I/01 8CI!D "C""
I/01 ------------------------------------------------------------------------
I/01 Eota% time: <.>;>s
I/01 /inished at: Eue Apr #; (':6:## "E #(''
45 I/01 /ina% ?emory: 4'?
46 I/01 ------------------------------------------------------------------------
47
48
49
50
"odemos ver como en la salida por pantalla como ha construido el proyecto y ha pasado el test. /simismo se ha creado un jar con el proyecto. Desde Eclipse ó STS.
/hora vamos a ver como hacer esto mismo en + ó (clipse. Lo primero será seleccionar la opción de men) /rchivo 9 ?tros. /l arir la ventana, escriiremos Maven para filtrar.
En la siguiente pantalla dejaremos desmarcado la opción de crear un proyecto simple *ya que queremos usar un arquetipo para ello+.
Después nos saldrá una lista con los arquetipos disponiles. #eleccionaremos maven9 archetype9quicIstart de la lista.
inalmente tendremos que indicar algunos parámetros para nuestro proyecto *nuestro groupd y artifactd+.
Buestro proyecto ya está creado en #(# ó Eclipse.
#i queremos ejecutar en nuestro DE favorito los comandos Maven podemos instalar un plugin Eclipse paraMaven llamado m:eclipse que nos hace todo mucho más fácil. En este post hemos visto dos maneras de crear un proyecto %ava desde Maven utilizando para ello un arquetipo. En el siguiente post veremos la estructura ásica de un proyecto Maven.