maven
propósito
- notas sobre el uso de
maven- es un proyecto la
Apache Sofware Foundation
- es un proyecto la
- nota en
wikipedia para construir los proyectos en java
tiene mejor pinta que
antvaloració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 amavenle indicamos qué jar externos necesitamos, es capaz de ir a buscarlos a internet y descargarlos por nosotros.- Sin necesidad prácticamente de configurar nada,
mavensabe 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). Mavense 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.
- Si vamos a una herramienta más evolucionada, llegamos a
instalación
- descargo maven
apache-maven-3.5.0-bin.zip - descomprimido en
C:\maven\apache-maven-3.5.0
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
mavendescarga lo necesario enC:\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.modelse crea el juego de directorios y subdirectoriosorg\apache\struts\ - librerías en el proyecto se generan en el directorio
targetlas saca del repositorio local donde se cargan las librerías que se definen enpom.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
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 ver más detalle
- para generar el sitio
mvn site:run
generar documentación
- con
mvn sitese genera el sitio en mvn site:run- de problemas con el puerto 8080 si esta lanzado un
Tomcatpor 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
Jettyenlocalhost:8080

utilidades
problemas
versión java
- para la creación de los ejemplos de
struts2 - modifico
pom.xmlañadiendo la compilación conjava 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
- usar
oracledesde un proyectostrutsmontado con maven - un enlace conexión y prueba sencilla
- como resolver las dependencias necesarias para conectar