2011-09-16 22 views
7

Perdónenme por una pregunta de principiante, pero ¿cuál es la diferencia entre las carpetas dist y deploy? Parece lo mismo: ambos contienen el .jar de los archivos. Sin embargo, cuando limpia y crea el proyecto, parece que solo se actualiza la carpeta dist. ¿Cómo se actualiza la carpeta de implementación?Java: diferencia entre las carpetas dist y deploy

Gracias.

+0

Estaba usando NetBeans IDE .. –

Respuesta

5

Supongo que está utilizando un diseño de directorio similar a lo que Netbeans IDE crea de forma predeterminada.

  • dist es la carpeta donde se almacenan los archivos generados (por lo que se actualiza a través de limpieza y construcción).
  • La carpeta build contiene clases compiladas y recursos, pero no los archivos comprimidos.

Maven, por defecto, coloca el contenido de ambos en una carpeta target.

Una carpeta deploy es el lugar donde coloca los artefactos generados (archivos o árboles de directorios con el mismo diseño que los archivos, a.k.a. archivos comprimidos) para que Application Server pueda servirlos.

En entornos de desarrollo no es inusual configurar el servidor para escanear las carpetas dist para artefactos generados y volver a desplegarlos. Entonces, en ese sentido, las carpetas de distribución y distribución pueden ser las mismas.

Incluso puede tener escenarios de implementación "in situ". Esto funciona mediante la compilación de sus clases directamente a la carpeta WEB-INF/classes dentro de webapp (con algo así como objetivo de Maven war:inplace). Si configura su servidor para escanear los cambios en esta carpeta, puede editar recursos como jps en su lugar y hacer que se reflejen inmediatamente en su aplicación en ejecución (a.k.a. despliegue explosivo de artefactos explosivos).

Por supuesto que puede lograr algo similar al instruir a su IDE para que copie los recursos y las clases compiladas a una estructura de archivo descompuesto y configurando su servidor para escanearlo. Netbeans tiende a usar build/web para ese propósito.

También a veces la redistribución incremental no es posible y, con frecuencia, las redistribuciones completas no son deseables (algunas aplicaciones pueden tardar varios minutos en volverse a implementar). Es por eso que puede usar carpetas separadas/desplegar sus artefactos como jarras/guerras/orejas, etc.

La compilación, el empaquetado y la implementación son fases/conceptos muy diferentes de un ciclo de vida de compilación, que pueden suceder o no.

Espero que esto sea suficiente información para comenzar.

Cheers,

+0

Gracias, esto fue muy informativo. :) –

4

Normalmente, un proyecto es responsable de crear un artefacto, cuando ese artefacto se construye se lo coloca en un directorio llamado target o dist. Cuando su proyecto es responsable de crear una aplicación web, necesita un lugar para organizar los archivos en su proyecto para que se ejecute en su contenedor de servlets o servidor de aplicaciones, y ese lugar es la carpeta de implementación. Por lo tanto, el directorio dist normalmente tendría un artefacto único como war, ear o jar, mientras que la carpeta deploy tendría los contenidos explotados en una estructura de directorio donde el servidor de la aplicación puede usarlos. Cómo se actualiza el contenido de la carpeta de implementación depende de su proceso de compilación o integración IDE.

Cuestiones relacionadas