maven

propósito

  • notas sobre el uso de maven

  • nota en wikipedia

  • para construir los proyectos en java

  • tiene mejor pinta que ant

  • valoración de www.chuidiang.org

    • Si vamos a una herramienta más evolucionada, llegamos a 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. Si a maven le indicamos qué jar externos necesitamos, es capaz de ir a buscarlos a internet y descargarlos por nosotros.
    • Sin necesidad prácticamente de configurar nada, maven sabe como borrar los class, compilar, generar el jar, generar el javadoc y generar un documentación web con montones de informes ( métricas, código duplicado, etc).
    • Maven se encarga de pasar automáticamente nuestros test de prueba cuando compilamos. Incluso maven nos genera un zip de distribución en el que van todos los jar necesarios y ficheros de configuración de nuestro proyecto.

INSTALACIÓN

  • descargo maven apache-maven-3.5.0-bin.zip apache-maven-3.8.4-bin.zip 2021-12-08 09:31:57 en el portatil hp en casa
  • descomprimido en C:\maven\apache-maven-3.5.0
  • añado esta entrada C:\programasDescargados\apache-maven-3.8.4-bin\apache-maven-3.8.4\bin a la variable de sistema PATH

VERSIÓN

C:\proyectos\jekyll\notas-programacion>mvn -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T21:39:06+02:00)
Maven home: C:\maven\apache-maven-3.5.0\bin\..
Java version: 1.7.0_25, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_25\jre
Default locale: es_ES, platform encoding: Cp1252
OS name: "windows 8", version: "6.2", arch: "amd64", family: "windows"

salida de una creación de un proyecto con maven

C:\proyectos\struts\struts-examples\basic-struts>mvn -e clean package
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Basic Struts2 Example 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ basic-struts ---
[INFO] Deleting C:\proyectos\struts\struts-examples\basic-struts\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ basic-struts ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ basic-struts ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ basic-struts ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\proyectos\struts\struts-examples\basic-struts\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ basic-struts ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ basic-struts ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-war-plugin:2.2:war (default-war) @ basic-struts ---
[INFO] Packaging webapp
[INFO] Assembling webapp [basic-struts] in [C:\proyectos\struts\struts-examples\basic-struts\target\basic-struts]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\proyectos\struts\struts-examples\basic-struts\src\main\webapp]
[INFO] Webapp assembled in [666 msecs]
[INFO] Building war: C:\proyectos\struts\struts-examples\basic-struts\target\basic-struts.war
[INFO] WEB-INF\web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.747 s
[INFO] Finished at: 2017-12-29T11:45:37+01:00
[INFO] Final Memory: 11M/168M
[INFO] ------------------------------------------------------------------------

LIBRERÍAS Y REPOSITORIOS

  • maven descarga lo necesario en C:\Users\javie\.m2\repository
  • esta bien organizado siguiendo la lógica de paquetes de forma que para resolver la inclusión de package org.apache.struts.register.model se crea el juego de directorios y subdirectorios org\apache\struts\
  • librerías en el proyecto se generan en el directorio target las saca del repositorio local donde se cargan las librerías que se definen en pom.xml
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-junit-plugin</artifactId>
    <version>${struts2.version}</version>
    <type>jar</type>
    <scope>test</scope>
</dependency>
  • esto se descargará en C:\Users\javie\.m2\repository\org\apache\struts\struts2-junit-plugin

  • repositorios de maven

servidor propio jetty

  • funciona mvn jetty:run
  • se ve en la dirección http://localhost:8080/basic-struts/index.action
  • sin necesidad de tomcat
C:\proyectos\struts\struts-examples\blank>mvn jetty:run
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.apache.struts:blank:war:1.0.0
[WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Struts 2 Blank Webapp 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> jetty-maven-plugin:8.1.16.v20140903:run (default-cli) > test-compile @ blank >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ blank ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 9 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ blank ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ blank ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\proyectos\struts\struts-examples\blank\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ blank ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< jetty-maven-plugin:8.1.16.v20140903:run (default-cli) < test-compile @ blank <<<
[INFO]
[INFO]
[INFO] --- jetty-maven-plugin:8.1.16.v20140903:run (default-cli) @ blank ---
[INFO] Configuring Jetty for project: Struts 2 Blank Webapp
[INFO] webAppSourceDirectory not set. Defaulting to C:\proyectos\struts\struts-examples\blank\src\main\webapp
[INFO] Reload Mechanic: automatic
[INFO] Classes = C:\proyectos\struts\struts-examples\blank\target\classes
[INFO] Added extra scan target:C:\proyectos\struts\struts-examples\blank\src\main\webapp\WEB-INF\web.xml
[INFO] Context path = /blank
[INFO] Tmp directory = C:\proyectos\struts\struts-examples\blank\target\tmp
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml
[INFO] Web overrides =  none
[INFO] web.xml file = file:/C:/proyectos/struts/struts-examples/blank/src/main/webapp/WEB-INF/web.xml
[INFO] Webapp directory = C:\proyectos\struts\struts-examples\blank\src\main\webapp
[INFO] jetty-8.1.16.v20140903
[INFO] No Transaction manager found - if your webapp requires one, please configure one.
[WARNING] !RequestLog
[INFO] Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
[INFO] Starting scanner at interval of 10 seconds.

comandos

  • para compilar mvn compile
    • para ver más detalle mvn compile -X
  • para generar el sitio
    • mvn site:run

generar documentación

  • con mvn site se genera el sitio en
  • mvn site:run
  • de problemas con el puerto 8080 si esta lanzado un Tomcat por ejemplo
 configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:2.9
[WARNING] No project URL defined - decoration links will not be relativized!
[INFO] Rendering site with org.apache.maven.skins:maven-default-skin:jar:1.0 skin.
[INFO] Starting Jetty on http://localhost:8080/
[INFO] jetty-6.1.25
[INFO] NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
[INFO] Started SelectChannelConnector@0.0.0.0:8080
  • se genera un sitio y se lanza con Jetty en localhost:8080

maven-site.png

utilidades

problemas

versión java

  • para la creación de los ejemplos de struts2
  • modifico pom.xml añadiendo la compilación con java 1.7
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <verbose>true</verbose>
        <fork>true</fork>
        <executable>C:\Program Files\Java\jdk1.7.0_80\bin\javac</executable>
    </configuration>
</plugin>

problema primer intento

  • pero encuentro este error
c:\proyectos\struts-examples\basic-struts>mvn clean package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Basic Struts2 Example 1.0.0
[INFO] ------------------------------------------------------------------------
[WARNING] The POM for org.apache.struts:struts2-core:jar:2.5.12 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.377 s
[INFO] Finished at: 2017-07-08T09:40:13+02:00
[INFO] Final Memory: 6M/169M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project basic-struts: Could not resolve dependencies for project org.apache.struts:basic-struts:war:1.0.0: Failure to find org.apache.struts:struts2-core:jar:2.5.12 in https://repository.apache.org/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of apache-public has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

comandos

  • para tener más información de lo que hace
mvn -X package

pendiente

mvn install