Publica tu how-to

Dinos como hacer lo que sabes hacer, mándanos un email a wdonet@gmail.com y lo publicamos (dos días máximo) o si te interesa unirte al equipo de redactores, también háznoslo saber por correo.

Intro comandos Maven 2.0

Para obtener ayuda del comando de Maven 2:
mvn --help

Sintaxis general:
mvn plugin:target [-Doption1 -Doption2 ...]

Para crear un proyecto JAR:
mvn archetype:create -DgroupId=com.empresa.proyecto -DartifactId=nombreAplicacionJAR
* Si vas a crear un módulo dentro de otro proyecto maven previamente creado, debes ejecutar el mismo comando pero dentro o al nivel raiz del proyecto que va a contener dicho módulo, automáticmante maven, hace que el nuevo proyecto sea módulo del proyecto a nivel raíz en el que te encuentras parado.
Observa el tag en el pom.xml del proyecto padre y el tag del proyecto hijo después de ejecutar el comando.
Para crear un proyecto WAR:

mvn archetype:create -DgroupId=com.empresa.proyecto -DartifactId=nombreAplicacionWAR -DarchetypeArtifactId=maven-archetype-webapp
tambien puedes usar:
mvn archetype:generate ...

Estructura generada:
/nombreAplicacionWAR/pom.xml/nombreAplicacionWAR/src/nombreAplicacionWAR/src/main/java/nombreAplicacionWAR/src/main/resources/nombreAplicacionWAR/src/main/webapp/nombreAplicacionWAR/src/main/webapp/index.jsp/nombreAplicacionWAR/src/main/webapp/WEB-INF/nombreAplicacionWAR/src/main/webapp/WEB-INF/web.xml

Estructura generada al compilar
/nombreAplicacionWAR/target/classes/nombreAplicacionWAR/target/test-classes/nombreAplicacionWAR/target/dots (salida de algun plugin)

Estructura generada al ejecutar una prueba unitaria
/nombreAplicacionWAR/test/java/nombreAplicacionWAR/test/resources
Ojo - Si tu ejecutas cualquiera de los comandos para crear un archetype dentro de la raiz de un proyecto maven, en lugar de crear un nuevo proyecto, agregarás un módulo al proyecto en el cual te encuentras. Esto es una dependencia mutua, el proyecto existente se ve como padre (parent) y al que estas creando como modulo (module) que se ve reflejado en el pom.xml de cada uno.

En el pom.xml del modulo (nuevo proyecto) veras algo como esto:
<parent>
<artifactId>nombre-artefacto</artifactId>
<groupId>org.paquete.proyecto</groupId>
<version>1.0</version>
</parent>

En el pom.xml del padre (proyecto ya previamente creado) veras algo como esto:
<modules>
<module>nombre-artefacto</module>
<module>... se repite para cada modulo </module>
</modules>


Para eliminar la carpeta target y forzar a maven que compile de nuevo cuando uses el target compile/install/test
mvn clean
Para compilar
mvn compile
Para ejecutar una prueba unitaria. el dejar solo 'mvn test' ocasrionará que ejecute todas y cada una de las pruebas unitarias del proyecto; esto es, clases que se encuentren dentro de la carpeta test y metodos dentro de dichas clases que su nombre inicie con la palabra 'test'.
mvn test -Dtest=MiPruebaTest (es el nombre de una clase test MiPruebaTest.java)
Si tu proyecto esta dividido por módulos y ejecutas una sola prueba de un submodulo pero desde la raiz del proyecto ( o el modulo padre), puedes usar el parametro failIfNoTests=false para obligar a que busque busque la prueba en los sub-modulos:
-DfailIfNoTests=false
Para empaquetar, crear JAR, WAR, EAR, segun la configuracion de pom.xmlmvn package
Para instalar un paquete del proyecto en el repositorio local (tu equipo) de maven. Puedes usar maven.test.skip para evitar correr las pruebas y tampoco compilarlas
mvn install -Dmaven.test.skip=true

Para limpiar e instalar un paquete del proyecto de maven. Puedes usar skipTests para evitar correr las pruebas pero si compilarlas
mvn clean install -DskipTests=true

Para descargar los archivos fuente. Este parámetro le dice a maven que descargue desde repositorios remotos el codigo fuente de las dependencias
mvn eclipse:eclipse -DdownloadSources=true

Referencias:

2 comentarios:

  1. Ayuda tengo ese error y no se como solucionarlo soy nuevo usando maven.

    Missing:
    ----------
    1) com.sun:tools:jar:1.4.2

    Try downloading the file manually from the project website.

    Then, install it using the command:
    mvn install:install-file -DgroupId=com.sun -DartifactId=tools -Dversion=1.4.2 -Dpackaging=jar -Dfile=/path/to/file

    Alternatively, if you host your own repository you can deploy the file there:
    mvn deploy:deploy-file -DgroupId=com.sun -DartifactId=tools -Dversion=1.4.2 -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

    Path to dependency:
    1) org.codehaus.mojo:aspectj-maven-plugin:maven-plugin:1.0
    2) com.sun:tools:jar:1.4.2

    ----------
    1 required artifact is missing.

    for artifact:
    org.codehaus.mojo:aspectj-maven-plugin:maven-plugin:1.0

    from the specified remote repositories:
    com.springsource.repository.bundles.milestone (http://repository.springsource.com/maven/bundles/milestone),
    com.springsource.repository.bundles.snapshot (http://repository.springsource.com/maven/bundles/snapshot),
    com.springsource.repository.bundles.external (http://repository.springsource.com/maven/bundles/external),
    codehaus.org (http://repository.codehaus.org),
    snapshots (http://snapshots.repository.codehaus.org),
    central (http://repo1.maven.org/maven2),
    com.springsource.repository.bundles.release (http://repository.springsource.com/maven/bundles/release)

    ResponderEliminar
  2. Que tal anónimo :S,
    Maven te está diciendo que por alguna razon no encuentra el artefacto con ese nombre, grupo y/o version, pueden ser problemas de red, inexistencia del artefacto, o bien, tienes algún error en los datos que solicitas.

    Pero si todo está correcto, tienes una alternativa, busca el artefacto en esta pagina http://findjar.com/index.x y dentro de la lista de alternativas que te aparecen, podras descargar el archivo .jar e instalarlo con la instrucción que el mismo maven te propone:
    mvn install:install-file -DgroupId=com.sun -DartifactId=tools -Dversion=1.4.2 -Dpackaging=jar -Dfile=/path/to/file

    con install:install-file le estas diciendo al maven que tome un archivo de tu maquina y lo instale en tu repositorio local ($HOME/.m2), los datos groupId, artifactId y version son datos que puedes obtener de un pom.xml ubicado en la misma ruta de donde descargaste el archivo, o bien, usas estos que te propone maven (com.sun, tools, 1.4.2).

    De cualquier forma, si nos puedes enviar el pom.xml de tu proyecto, te podríamos dar mejores referencias de tu problema.

    ResponderEliminar

Que opinas sobre esta publicación?