2011-08-05 14 views
16

Alto Nivel Meta: crear un único proyecto de aplicación Web Maven que puede ser utilizado correctamente, tanto en Netbeans y Eclipse¿Puede Eclipse importar un proyecto web de Maven como una "aplicación web dinámica"?

Al convertir un proyecto Maven para Eclipse, no parece ser ajustado en Web dinámica del tipo de proyecto aplicación cuando se utiliza el comando: mvn eclipse: eclipse de -Dwtpversion = 2,0

en Eclipse, si la creación de una aplicación web dinámica, muchas más opciones se muestran en el Explorador de proyectos, tales como: JAX-WS web Services, Descriptor de implementación, etc. Es una estructura de estructura completamente diferente.

enter image description here

Además, después de la conversión a Eclipse con el comando anterior, no puedo "Ejecutar" que a pesar de que la salida de la conversión dice: [INFO] Uso como servidor WTP: Apache Tomcat v7.0 . En lugar de querer ejecutar como un servicio web, me pregunta si esto es Java Servlet, Applet o prueba unitaria.

enter image description here

con una aplicación Web dinámica (Eclipse nativo), esto es lo que aparece cuando se ejecuta el proyecto:

enter image description here

Tal vez estoy pidiendo demasiado de Eclipse, y para obtener la funcionalidad de la aplicación web incorporada, ¿no puede venir de Maven?

Hay otra que podría probar. Podría crear una aplicación web dinámica en Eclipse, luego presionar "Convertir a Maven". Toma ese POM, modifica, luego ve si netbeans también lo cargará.

Mi 'pom.xml':

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>com.voxel</groupId> 
<artifactId>servermap</artifactId> 
<version>1.0-SNAPSHOT</version> 
<packaging>war</packaging> 

<name>userprofile</name> 

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.2</version> 
     <scope>test</scope> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.grizzly</groupId> 
     <artifactId>grizzly-servlet-webserver</artifactId> 
     <version>1.9.18-m</version> 
    </dependency> 
</dependencies> 

<repositories> 
    <repository> 
     <id>maven2-repository.dev.java.net</id> 
     <name>Java.net Repository for Maven</name> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
</repositories> 

Respuesta

15

Según lo sugerido por jhericks, si usa m2eclipse, no necesita usar eclipse:eclipse goal. Lo que hace el eclipse:eclipse goal también lo puede hacer el m2eclipse.

Para convertir un proyecto para la aplicación web dinámica, puede configurar los Project Facets opciones en las propiedades del proyecto

enter image description here

+0

Esto parece ser fundamentalmente lo que me faltaba. El concepto de facetas del proyecto. Todavía tengo mucho trabajo por hacer para ajustar esto para trabajar en Eclipse + Netbeans + IntelliJ, pero esto me lleva a superar el principal problema que tenía :) – jsidlosky

+1

Hmm ... Cuando importo mi módulo Maven, este Project Facet automáticamente se establece para mí, así que no sé qué hay de diferente entre yo y @jsidlosky. – jhericks

+0

Falta un paso: después de agregar la faceta 'Dynamic Web Module', ¿cómo decirle a Eclipse que use' src/main/webapp' en lugar de su directorio 'WebContent' habitual? –

3

he tenido mejor suerte con el m2eclipse plugin de Sonatype. Cuando comencé, cometí el error de tratar de usar tanto el objetivo m2eclipse como el eclipse: eclipse. No hacen exactamente lo mismo, por lo que si instalas el complemento, deja de hacer mvn eclipse: eclipse. De todos modos, me ha funcionado muy bien con proyectos web únicos y muy bien con proyectos de estilo reactor de proyectos múltiples también.

El único problema que he tenido es tratar de implementar un archivo war en un servidor configurado en eclipse si ese archivo war está construido con una superposición, pero eso no parece ser un problema para usted.

+0

que utiliza el método de importación m2eclipse plugin y se ve mejor que con mvn eclipse: eclipse de método! Así que gracias por eso. Sin embargo, todavía no es una "aplicación web dinámica" desde la perspectiva de Eclipse. Me doy cuenta de que quizás estoy pidiendo demasiado, pero pensé que podría ser posible. Actualicé mi publicación arriba con capturas de pantalla para que quede más claro. Gracias Señor. – jsidlosky

+0

Cuando lo hago en mi proyecto, funciona. Tengo la opción Ejecutarme en el servidor para mis aplicaciones web (y de hecho la ejecutaré en mi servidor). Sin embargo, no estoy seguro de qué cosa mágica está viendo en mi proyecto para que funcione. Una cosa que podría intentar es asegurarse de que no haya ningún archivo .project cuando realice la importación. Además, no puedo decirlo por tus capturas de pantalla, pero supongo que tienes un directorio src/main/webapp/WEB-INF. Si no, eso podría ser. Una última cosa para probar: haga clic derecho en el proyecto, elija Maven y luego elija Actualizar configuración del proyecto. Después de eso, me he quedado sin ideas. – jhericks

+0

Intenté esto y al hacer "Ejecutar en servidor" obtengo 'Document base /home/nico/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/MyWebapp no ​​existe o no es un directorio legible' –

Cuestiones relacionadas