domingo, 22 de mayo de 2011

Maven por consola de comandos en Ubuntu

El otro día le explicaba a un amigo como usar maven y por cosas de la universidad donde estudia, me dijo que debía crear su proyecto sin la ayuda de ningún IDE; Por eso decidí hacer este tutorial para explicar la forma de crear aplicaciones en java usando maven desde la consola de comandos.

Primero lo primero, hay que tener maven instalado, sino lo está ya la forma más simple es usando el siguiente comando:

sudo aptitude install maven2
Verificamos que este todo bien
mvn --version

Ahora que ya esta instalado maven, creamos nuestro proyecto, para este ejemplo crearé una aplicación Web usando el siguiente comando.
mvn archetype:generate -DgroupId=net.ejemplos -DartifactId=ejemplo -DarchetypeArtifactId=maven-archetype-webapp -Dversion=1.0-SNAPSHOT -DinteractiveMode=false

Deberiamos ver una salida similar a la siguiente en la consola:
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:generate] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:generate
[INFO] No goals needed for project - skipping
[INFO] [archetype:generate {execution: default-cli}]
[INFO] Generating project in Batch mode
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-webapp:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: net.ejemplos
[INFO] Parameter: packageName, Value: net.ejemplos
[INFO] Parameter: package, Value: net.ejemplos
[INFO] Parameter: artifactId, Value: ejemplo
[INFO] Parameter: basedir, Value: /home/[usuario]/Desarrollo
[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: /home/[usuario]/Desarrollo/ejemplo
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11 seconds
[INFO] Finished at: Sun May 01 19:44:31 EST 2011
[INFO] Final Memory: 11M/27M
[INFO] ------------------------------------------------------------------------

Luego creamos la carpeta donde ira nuestro código fuente y una primera clase simple:
cd ejemeplo1
mkdir -p src/main/java/net/ejemplos/
touch src/main/java/net/ejemplos/DateTime.java
gedit src/main/java/net/ejemplos/DateTime.java

Dentro de la clase ponemos un código simple como por ejemplo el siguiente:
package net.ejemplos;

/**
 *
 * @author eivar
 */
public class DateTime {
  public long getCurrentDate(){
    return System.currentTimeMillis();
  }
}
Nota: por favor reemplacen el autor con su nombre o eliminen el comentario :P

Ahora podemos compilar o empaquetar el proyecto o cualquiera de las otras opciones que nos ofrece maven, por ejemeplo para compilar:
mvn compile

Ahora para probar nuestra clase modificamos el archivo index.jsp que debió haber sido creado automáticamente por maven:


Ya que estamos trabajando con una aplicación web yo recomiendo usar jetty sobre todo porque se integra muy bien con maven mediante un plugin, a continuación dejo un ejemplo de mi pom.xml donde tengo configurado jetty:


Ahora que tenemos integrado jetty y maven podemos usar el comando siguiente para compilar, empaquetar y ejecutar la aplicación desde la consola de comandos:
#Presionamos ctrl+C para terminar la ejecution de jetty.
mvn compile package jetty:run

Recomiendo leer la documentación de maven aquí.

Saludos.