Hemos visto en el anterior post Introducción a Maven un visión general sobre lo que es Maven y sus principales características.
Maven permite crear proyectos desde línea de comandos o bien desde nuestro IDE favorito. Pero 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.
Primero vamos a crear nuestro proyecto desde línea de comandos. Para ello vamos a modificar la siguiente línea en función del tipo de proyecto que queramos crear.
mvn archetype:generate -DarchetypeGroupId= -DarchetypeArtifactId= -DarchetypeVersion= -DgroupId= -DartifactId=
El arquetipo más sencillo que podemos utilizar en Maven para crear un proyecto es maven-archetype-quickstart. Así pues la línea que ejecutaremos será la siguiente.
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=RELEASE -DgroupId=com.hop2croft.example -DartifactId=QuickstartExample
La salida que generará por consola será la siguiente. En primer lugar se bajará los plugins, dependencias ó recursos que se necesiten (y que no estén ya en nuestro repositorio local).
hop2croft-e105bb50cb>maven Ivan$ mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=RELEASE -DgroupId=com.hop2croft.example -DartifactId=QuickstartExample[INFO] Scanning for projects... Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-site-plugin/2.0.1/maven-site-plugin-2.0.1.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-site-plugin/2.0.1/maven-site-plugin-2.0.1.pom (14 KB at 11.0 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom (5 KB at 6.9 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.0/maven-release-plugin-2.0.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.0/maven-release-plugin-2.0.pom (8 KB at 11.6 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/release/maven-release/2.0/maven-release-2.0.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/release/maven-release/2.0/maven-release-2.0.pom (7 KB at 10.0 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xml Downloaded: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/maven-metadata.xml (643 B at 1.1 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.0/maven-archetype-plugin-2.0.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.0/maven-archetype-plugin-2.0.pom (6 KB at 8.4 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/archetype/maven-archetype/2.0/maven-archetype-2.0.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/archetype/maven-archetype/2.0/maven-archetype-2.0.pom (9 KB at 19.5 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.0/maven-archetype-plugin-2.0.jar Downloaded: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archetype-plugin/2.0/maven-archetype-plugin-2.0.jar (70 KB at 49.5 KB/sec) [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] >>> maven-archetype-plugin:2.0:generate (default-cli) @ standalone-pom >>> [INFO] [INFO] <<< maven-archetype-plugin:2.0:generate (default-cli) @ standalone-pom <<< [INFO] [INFO] --- maven-archetype-plugin:2.0:generate (default-cli) @ standalone-pom --- Downloading: http://repo1.maven.org/maven2/org/apache/maven/archetype/archetype-common/2.0/archetype-common-2.0.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/archetype/archetype-common/2.0/archetype-common-2.0.pom (16 KB at 34.4 KB/sec) Downloading: http://repo1.maven.org/maven2/net/sourceforge/jchardet/jchardet/1.0/jchardet-1.0.pom Downloaded: http://repo1.maven.org/maven2/net/sourceforge/jchardet/jchardet/1.0/jchardet-1.0.pom (2 KB at 2.3 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-invoker/2.0.10/maven-invoker-2.0.10.pom Downloaded: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-invoker/2.0.10/maven-invoker-2.0.10.pom (6 KB at 10.0 KB/sec) Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom Downloaded: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom (2 KB at 3.4 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/archetype/archetype-common/2.0/archetype-common-2.0.jar Downloading: http://repo1.maven.org/maven2/net/sourceforge/jchardet/jchardet/1.0/jchardet-1.0.jar Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-5/plexus-interactivity-api-1.0-alpha-5.jar Downloading: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.jar Downloaded: http://repo1.maven.org/maven2/net/sourceforge/jchardet/jchardet/1.0/jchardet-1.0.jar (26 KB at 8.6 KB/sec) Downloading: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-invoker/2.0.10/maven-invoker-2.0.10.jar Downloaded: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-5/plexus-interactivity-api-1.0-alpha-5.jar (14 KB at 4.2 KB/sec) Downloaded: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar (8 KB at 2.1 KB/sec) Downloaded: http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.jar (262 KB at 70.4 KB/sec) Downloaded: http://repo1.maven.org/maven2/org/apache/maven/shared/maven-invoker/2.0.10/maven-invoker-2.0.10.jar (28 KB at 18.3 KB/sec) Downloaded: http://repo1.maven.org/maven2/org/apache/maven/archetype/archetype-common/2.0/archetype-common-2.0.jar (214 KB at 40.0 KB/sec)
Lo siguiente será crear el proyecto a partir del arquetipo indicado. Aunque le hemos dicho a partir de que arquetipo queremos crear nuestro proyecto, Maven nos muestra una lista de arquetipos disponibles.
[INFO] Generating project in Interactive mode [INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) Choose archetype: 1: remote -> docbkx-quickstart-archetype (-) 2: remote -> multi (-) 3: remote -> simple (-) 4: remote -> apparat-archetype-asm (-) 5: remote -> apparat-archetype-tdsi (-) 6: remote -> gquery-archetype (-) 7: remote -> gquery-plugin-archetype (-) 8: remote -> jdbc-proc-archetype (Creates simple project with jdbc-proc support) 9: remote -> liferay-layouttpl-archetype (Provides an archetype to create Liferay layout templates.) 10: remote -> liferay-portlet-archetype (Provides an archetype to create Liferay portlets.) ... 100: remote -> maven-archetype-mojo (An archetype which contains a sample a sample Maven plugin.) 101: remote -> maven-archetype-plugin (An archetype which contains a sample Maven plugin.) 102: remote -> maven-archetype-plugin-site (An archetype which contains a sample Maven plugin site. This archetype can be layered upon an existing Maven plugin project.) 103: remote -> maven-archetype-portlet (An archetype which contains a sample JSR-268 Portlet.) 104: remote -> maven-archetype-profiles (-) 105: remote -> maven-archetype-quickstart (An archetype which contains a sample Maven project.) 106: remote -> maven-archetype-site (An archetype which contains a sample Maven site which demonstrates some of the supported document types like APT, XDoc, and FML and demonstrates how to i18n your site. This archetype can be layered upon an existing Maven project.) .... 381: remote -> spring-osgi-bundle-archetype (Spring OSGi Maven2 Archetype) 382: remote -> spring-ws-archetype (Spring Web Services Maven2 Archetype.) 383: remote -> syncope-archetype (-) 384: remote -> trails-archetype (-) 385: remote -> trails-secure-archetype (-) 386: remote -> tynamo-archetype (-) 387: remote -> wicket-scala-archetype (-) 388: remote -> wikbook.archetype (-) 389: remote -> circumflex-archetype (-) 390: remote -> javg-minimal-archetype (-) Choose a number: 105:
Seleccionado el arquetipo, le decimos a Maven a través del asistente el resto de información de nuestro proyecto.
Choose version: 1: 1.0-alpha-1 2: 1.0-alpha-2 3: 1.0-alpha-3 4: 1.0-alpha-4 5: 1.0 6: 1.1 Choose a number: 6: 6 Define value for property 'groupId': : com.hop2croft.example Define value for property 'artifactId': : QuickstartExample Define value for property 'version': 1.0-SNAPSHOT: : Define value for property 'package': com.hop2croft.example: : Confirm properties configuration: groupId: com.hop2croft.example artifactId: QuickstartExample version: 1.0-SNAPSHOT package: com.hop2croft.example Y: : [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: groupId, Value: com.hop2croft.example [INFO] Parameter: packageName, Value: com.hop2croft.example [INFO] Parameter: package, Value: com.hop2croft.example [INFO] Parameter: artifactId, Value: QuickstartExample [INFO] Parameter: basedir, Value: /Users/Ivan/Desktop/maven [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] ********************* End of debug info from resources from generated POM *********************** [INFO] project created from Old (1.x) Archetype in dir: /Users/Ivan/Desktop/maven/QuickstartExample [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2:31.014s [INFO] Finished at: Tue Apr 26 01:23:24 CEST 2011 [INFO] Final Memory: 7M/81M [INFO] ------------------------------------------------------------------------ ivan-e105bb50cb:maven Ivan$
Tendremos un proyecto con el nombre Quickstart formado por una clase normal (el tipíco hola Mundo) y por una clase de Test sencilla. Si queremos compilarla y probarla, simplemente tendremos que ejecutar mvn install.
ivan-e105bb50cb:QuickstartExample Ivan$ mvn clean install [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building QuickstartExample 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ QuickstartExample --- [INFO] [INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ QuickstartExample --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /Users/Ivan/Desktop/maven/QuickstartExample/src/main/resources [INFO] [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ QuickstartExample --- [INFO] Compiling 1 source file to /Users/Ivan/Desktop/maven/QuickstartExample/target/classes [INFO] [INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ QuickstartExample --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory /Users/Ivan/Desktop/maven/QuickstartExample/src/test/resources [INFO] [INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ QuickstartExample --- [INFO] Compiling 1 source file to /Users/Ivan/Desktop/maven/QuickstartExample/target/test-classes [INFO] [INFO] --- maven-surefire-plugin:2.7.1:test (default-test) @ QuickstartExample --- [INFO] Surefire report directory: /Users/Ivan/Desktop/maven/QuickstartExample/target/surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.hop2croft.example.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.022 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ QuickstartExample --- [INFO] Building jar: /Users/Ivan/Desktop/maven/QuickstartExample/target/QuickstartExample-1.0-SNAPSHOT.jar [INFO] [INFO] --- maven-install-plugin:2.3.1:install (default-install) @ QuickstartExample --- [INFO] Installing /Users/Ivan/Desktop/maven/QuickstartExample/target/QuickstartExample-1.0-SNAPSHOT.jar to /Users/Ivan/.m2/repository/com/hop2croft/example/QuickstartExample/1.0-SNAPSHOT/QuickstartExample-1.0-SNAPSHOT.jar [INFO] Installing /Users/Ivan/Desktop/maven/QuickstartExample/pom.xml to /Users/Ivan/.m2/repository/com/hop2croft/example/QuickstartExample/1.0-SNAPSHOT/QuickstartExample-1.0-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 9.767s [INFO] Finished at: Tue Apr 26 01:43:22 CEST 2011 [INFO] Final Memory: 9M/81M [INFO] ------------------------------------------------------------------------
Podemos ver como en la salida por pantalla como ha construido el proyecto y ha pasado el test. Asimismo se ha creado un jar con el proyecto.
Desde Eclipse ó STS.
Ahora vamos a ver como hacer esto mismo en STS ó Eclipse. Lo primero será seleccionar la opción de menú Archivo -> Otros. Al abrir la ventana, escribiremos 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 disponibles. Seleccionaremos maven-archetype-quickstart de la lista.
Finalmente tendremos que indicar algunos parámetros para nuestro proyecto (nuestro groupId y artifactId).
Nuestro proyecto ya está creado en STS ó Eclipse.
Si queremos ejecutar en nuestro IDE favorito los comandos Maven podemos instalar un plugin Eclipse para Maven llamado m2eclipse que nos hace todo mucho más fácil.
En este post hemos visto dos maneras de crear un proyecto Java desde Maven utilizando para ello un arquetipo. En el siguiente post veremos la estructura básica de un proyecto Maven.
2 Respuestas a “Creación de un proyecto Java desde Maven”