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
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 amaven
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.
- Si vamos a una herramienta más evolucionada, llegamos a
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 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.model
se crea el juego de directorios y subdirectoriosorg\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 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 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
enlocalhost:8080
utilidades
problemas
versión java
- para la creación de los ejemplos de
struts2
- modifico
pom.xml
añ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
oracle
desde un proyectostruts
montado con maven - un enlace conexión y prueba sencilla
- como resolver las dependencias necesarias para conectar
mvn install