mvn mvc example development create app java eclipse java-ee maven junit

java - mvc - spring maven web project



Proyecto Java Dynamic Web con Maven y Eclipse (4)

Debe crear un proyecto basado en el arquetipo de Maven de la aplicación web, no el predeterminado que está utilizando.

Estoy usando SpringSource Tool Suite, que para este ejercicio es igual a Eclipse con m2e. Crea un nuevo proyecto Maven y asegúrate de seleccionar el siguiente arquetipo:

El Maven, la forma de hacer esto en línea de comandos es:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

Este arquetipo colocará la carpeta WEB-INF en la ubicación correcta (en src / main / webapp).

Puede encontrar más información en http://maven.apache.org/guides/mini/guide-webapp.html

Tengo varias preguntas sobre cómo crear una aplicación web Java con Maven y Eclipse:

  • ¿Cómo creo un proyecto web Java con servlets, jsp y otras clases con Maven?
  • Crea una estructura de directorio simple, src-> main-> java. ¿Dónde y cómo pongo la carpeta web-inf?
  • ¿Debo agregar manualmente los jdbc-drivers a la carpeta dentro de web-inf / lib, o está bien solo para señalar la dependencia?
  • ¿Hay alguna manera de probar los servlets con junit?


Wow, hay muchas preguntas a la vez. Admito que configurar un proyecto de webapp con Maven y Eclipse puede ser complicado, así que trataré de responderlos a todos.

Crear un proyecto de aplicación web con Maven

¿Cómo creo un proyecto web java con servlets jsp y otras clases con maven? Crea una estructura de directorio simple, src-> main-> java.

Cuando está creando un proyecto web Java, el producto final debe ser un archivo WAR o EAR. Los archivos WAR y EAR son archivos JAR con una estructura específica que se puede implementar en un servidor de aplicaciones o en un contenedor de servlets.

Como se mencionó, la forma más fácil de configurar un proyecto Maven para aplicaciones web es usar arquetipos:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp

Si creamos un proyecto con este arquetipo, se genera una estructura de directorio simple y pom.xml. Este proyecto sigue el diseño de directorio Maven estándar que mencionas, con /src/main/java/ , /src/test/java , etc. Maven genera el archivo WAR de esta estructura con el objetivo war: war.

Tenga en cuenta que este arquetipo es para una aplicación web muy simple (obsoleta), pero es el mejor punto de partida disponible. Probablemente desee descartar el archivo web.xml y crear uno nuevo que admita Servlet 3.0.

Ubicación de WEB-INF

¿Dónde y cómo pongo la carpeta web-inf?

De forma predeterminada, Maven espera que los recursos que deben ir en la raíz del archivo WAR, como las imágenes, las páginas html y el directorio WEB-INF, residan en /src/main/webapp/ . Por lo tanto, la carpeta WEB-INF debe estar ubicada en /src/main/webapp/WEB-INF/ . Si usa maven-archetype-webapp, este directorio se crea automáticamente, junto con un ejemplo de archivo web.xml.

Integración de Eclipse

Mencionó Eclipse en el título de la pregunta, y es posible desarrollar aplicaciones web Mavenized en Eclipse con el plugin m2eclipse. Eclipse tiene un buen soporte para aplicaciones web a través de WTP (Web Tools Platform).

Aunque muchas guías en Internet (erróneamente) lo recomiendan, no debe usar el comando mvn eclipse: eclipse para crear el proyecto Eclipse . Este complemento solo puede generar proyectos WTP para versiones Eclipse muy antiguas (WTP 2.0 es el máximo). En su lugar, use el plugin m2eclipse como se describe here .

Dependencias

¿Debo agregar manualmente los jdbc-drivers a la carpeta dentro de web-inf / lib, o está bien solo para señalar la dependencia?

No es necesario hacerlo manualmente, ya que una de las fortalezas clave de Maven es la administración de la dependencia. Si agrega una dependencia en el pom.xml con un alcance de compilación o tiempo de ejecución , el archivo JAR se incluirá automáticamente en el directorio WEB-INF/lib/ del archivo WAR. Por ejemplo, para agregar la dependencia del controlador Postgresql JDBC, agréguela a su pom.xml:

<dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>9.1-901.jdbc4</version> </dependency>

Como el alcance no está especificado, Maven asumirá que se encuentra en la compilación de alcance predeterminada. El resultado es que Maven incluirá WEB-INF/lib/postgresql-9.1-901.jdbc4.jar en el archivo WAR.

Pruebas

¿Hay alguna manera de probar los servlets con junit?

Esta pregunta se ha formulado (y respondido) en :

Referencias


  • Paso 1: crea la carpeta de tu aplicación web.
  • Paso 2: muévase a esa carpeta en el símbolo del sistema.
  • Paso 3: use el siguiente comando:

mvn archetype: generate -DgroupId = com.helloworld -DadifactId = HelloWorldDemo -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false

DarchetypeArtifactId = maven-archetype-webapp creará un proyecto web maven.

  • Paso 4: ahora, en el símbolo del sistema, ingrese dentro de la carpeta del proyecto y use este comando: mvn eclipse:eclipse -Dwtpversion=2.0 para hacer de su proyecto un proyecto web dinámico para eclipse, ahora importe este proyecto recién creado como un " proyecto existente "

Use el plugin m2eclipse de eclipse para habilitar MAVEN en eclipse.

Web.xml estará en / src / main / webapp / WEB-INF