Procedente de un fondo ASP.NET, considero impactante la cantidad de trabajo que se requiere para ejecutar una aplicación web con Eclipse WTP y Maven, especialmente si está aprendiendo por su cuenta. Esperemos que esta guía de inicio rápido ayude a alguien a ponerse al día rápidamente.
Hay dos maneras de obtener un proyecto de hello world trabajando en Eclipse WTP con Maven. Puede crear un proyecto web dinámico y luego agregar la naturaleza de Maven o puede hacer lo contrario.
Pre-requisitos para Eclipse con sitios de actualización
configuración de inicio
Opción 1: Crear Proyecto Web dinámica a continuación, añadir Maven Naturaleza
Crear nuevo proyecto Maven, seleccione arquetipo org.apache.maven.archetypes : maven-archetype-webapp
Cambiar a la perspectiva de Java EE.
Crear una nueva carpeta de origen, src \ main \ java. Observe que Eclipse no es lo suficientemente inteligente como para hacer esto por usted y que el orden de las carpetas es incorrecto. src \ main \ java carpeta aparece después de src \ main \ resources. Esto se puede arreglar manualmente más tarde en las propiedades del proyecto.
Cree un nuevo servlet. Observe cómo Eclipse omite este archivo en la carpeta incorrecta src \ main \ resources porque el orden es incorrecto. En su lugar, seleccione manualmente src \ main \ java. Cambie la asignación de URL en la segunda página del asistente a/* para facilitar las pruebas.
Ahora nuestro servlet está listo pero las dependencias en la api de servlet están libres. A) podemos agregar el servlet api como una dependencia a nuestro proyecto o B) podemos enlazar a la configuración del servidor de Eclipse para Apache 7.0.
Para la opción A, agregue esta dependencia a la pom:
.
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-api</artifactId>
<version>7.0.${set this}</version>
<scope>provided</scope>
</dependency>
Prueba de dependencia publicación:
.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("The time is now: " + new DateTime().toString());
}
Actualizar la página de prueba y la salida debe estar ahora:
Ahora: 2012-03-03T14: 14: 29,890 a 05: 00
Ahora bien, si Si quieres jugar con Servlet 3.0 y anotaciones, esto no está habilitado de manera predeterminada, por lo que no sé. Primero fuerce Maven a usar Java 1.6 agregando esto a su pom; de lo contrario, cada vez que actualice su pom la configuración volverá a Java 1.5.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
Abrir Project Properties -> Project Facets. Cambie la versión en "Dynamic Web Module" a 3.0, cambie la versión java 1.6
Cree un nuevo servlet con nombre de clase AnnotatedServlet en src \ main \ java y observe cómo se crea automáticamente la anotación @WebServlet.
Opción 2: Crear un proyecto Web dinámica a continuación, añadir Maven Naturaleza
- Seleccionar Tomcat tiempo de ejecución y el módulo dinámico de la versión 3.0
- Crear carpeta de origen src \ \ Java principal
- objetivo salida por defecto Conjunto \ clases
- Establecer directorio de contexto src \ main \ webapp
- Comprobar generar web.xml
- Crear servlet con el mapeo/* para la prueba rápida
- Añadir una instrucción de salida al método doGet
response.getWriter().println("Another test");
doble clic en el "descriptor de despliegue" y añadir este atributo a la raíz Elemento web-app metadata-complete="false"
Haga clic derecho en proyecto y seleccione Ejecutar como -> Ejecutar en el servidor
- proyecto clic derecho -> Configuración -> Convertir en Proyecto Maven
- Seleccionar envasado como la guerra
- Editar pom y establecer compilador que utilice Java 1.6 y complemento tiempo joda dependencia:
.
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Gracias por la punta, esto se ha configurado correctamente pero no funciona. Eventualmente descubrí que crear un nuevo proyecto desde cero funcionaba. En este caso, creé el proyecto y luego agregué el conector Maven WTP y no configuré el proyecto correctamente. – dcompiled
Tuve un problema un poco diferente, pero esto lo solucionó. Estaba usando Maven para construir mi proyecto que contenía SNAPSHOTS. Originalmente tenía habilitada la Resolución de espacio de trabajo y la apagué. Eclipse se configuró para seguir usando el proyecto local y no las instantáneas de nuestro repositorio de nexus. Seguí recibiendo CNFE y encontré esto que me señaló el problema de que aún intentaba resolverlo y no publicarlo. – bh5k
esto me ayudó mucho y en otro caso :) (similar) – Alex