2010-03-23 24 views
7

Me resulta muy frustrante hacer un desarrollo web con Maven & Jetty usando Eclipse, compáralo con lo que hice usando Visual Studio. Cada vez que realizo un cambio, incluso un cambio menor en mi archivo de vista, (* .jsp, por ejemplo), entonces tengo que volver a empaquetar toda la web -> esperando que embarcadero recargue todo antes de poder ver el cambio.Desarrollo web con Jetty & Maven

¿Hay alguna manera mejor de hacerlo, algo así como un complemento automático que seleccionará los archivos cambiados y desplegará los archivos modificados en el servidor web?

+0

Acabo de toparme con esta publicación, debo mencionar que una solución comercial para este problema es http://www.zeroturnaround.com/jrebel/. – Andy

Respuesta

13

La forma en que está usando Maven, Jetty (y Eclipse) juntos no está claro, pero dado que la pregunta está etiquetada Maven, cubriré el modo Maven. Con un proyecto del tipo war, una manera fácil de poner en marcha la webapp es usar el Maven Jetty Plugin. Para ello, basta con añadir el siguiente fragmento de su POM:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>maven-jetty-plugin</artifactId> 
     <version>6.1.10</version> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

Con esta configuración, corriendo mvn jetty:run se iniciará un recipiente embarcadero con su aplicación implementada. Cualquier cambio en una vista hará que el JSP se vuelva a compilar cuando se solicite. Y para configurar el embarcadero complemento para mirar también por cambios en el código de Java, que tendrá que añadir la opción scanIntervalSeconds:

scanIntervalSeconds opcional. La pausa en segundos entre los barridos de la aplicación web para comprobar los cambios y volver a desplegar automáticamente en caliente si se detecta alguno. De manera predeterminada, esto es 0, que deshabilita la exploración de implementación en caliente. Un número mayor que 0 lo habilita.

Así la configuración podría ser:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>maven-jetty-plugin</artifactId> 
     <version>6.1.10</version> 
     <configuration> 
      <scanIntervalSeconds>1</scanIntervalSeconds> 
     </configuration> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

Y si usted quiere ser capaz de conectar un depurador remoto, echar un vistazo a these instructions.

Así es como siempre he usado Jetty con Maven y Eclipse, y siempre he estado contento con esta configuración. Nunca he usado el adaptador Jetty para la WTP, la configuración anterior es simplemente inmejorable.

+0

Hmm, suena interesante. En realidad, estaba pensando en un complemento separado, algo que puede invocar una fase maven (como 'paquete') en respuesta a cambios de archivos. El scanIntervalSeconds es una buena opción. ¿Pero qué pasa con otro plugin que también inicia una versión diferente de embarcadero como Google App Engine (el maven-gae-plugin, por ejemplo) que no ofrece esta opción? –

+0

@Phuong Desafortunadamente, no tengo ninguna experiencia con el plugin gae, así que no puedo decir mucho al respecto. –

+0

Encontré este plugin FileSync eclipse: http://andrei.gmxhome.de/filesync/index.html que se puede usar para copiar los archivos modificados a la carpeta desplegada. Lo intento en este momento, parece prometedor, ya que no dependerá de lo que el complemento Maven pueda ofrecer. –

0

No he usado Jetty con Eclipse, pero si utiliza Tomcat (y supongo que Jetty también funcionaría) con WTP y el plugin m2eclipse, Eclipse creará y publicará su aplicación web cada vez que se guarde un recurso.

  1. Cree (o utilice el existente) proyecto Maven con embalaje 'war'.

  2. En la vista "servidores" de Eclipse, haga clic con el botón derecho y configure un servidor.

  3. Haga clic con el botón derecho en el servidor configurado, seleccione "Agregar o quitar proyectos" y seleccione su proyecto.

  4. Haga clic en el triángulo verde en la vista de servidores para iniciar el servidor.

Ahora Eclipse debe autocompilar y publicar su aplicación web cada vez que realice un cambio. Tenga en cuenta que debe tener el complemento m2eclipse Y el complemento de integración m2tclipse WTP para que esto funcione.

+0

@Will: en el proyecto maven, las configuraciones almacenadas en pom.xml lateral se usarán para iniciar el servidor (el puerto, por ejemplo, mediante el objetivo invocar mvn). Me pregunto si es posible a tu manera. –

Cuestiones relacionadas