2008-12-08 17 views
18

Si bien la característica de referencia del módulo J2EE le permite crear proyectos de biblioteca Java comunes, no puedo encontrar una manera ordenada de hacerlo para el contenido web.Cómo compartir contenido web entre proyectos de eclipse

Tengo JSP comunes, archivos CSS, bibliotecas de JavaScript e incluso fragmentos de descriptores que me gustaría utilizar en varios proyectos web dinámicos, por lo que estos artefactos se editan en un solo lugar, pero se exportarán a cada uno de los archivos WAR de Dynamic WebProject.

Me sorprende que no pueda encontrar una manera de promover la reutilización en el espacio web sin escribir mis propios scripts y engancharme en el proceso de exportación.

¿Hay alguna manera de hacerlo? Gracias. Matt.

Respuesta

4

Creo que escribir sus propios scripts (por ejemplo, pasos de creación personalizados usando Ant, fácilmente configurables en eclipse) es una de las soluciones más prácticas.

También podría crear varias aplicaciones web y hacer referencia a sus recursos respectivos; esto sería fácil con css, imágenes y similares, no tanto con jsp que necesita acceder a su código para estar disponible.

Me imagino algunos trucos con tomcats crossContext = "verdadera" opción para el contexto (por ejemplo, aplicación web), permitiendo que una aplicación acceda a clases en otra aplicación, pero aún no las haya probado.

Lo sentimos - Creo que no es la respuesta desea escuchar ...

+0

Yo también, pero no es cómodo en absoluto. –

3

Si utilizas Subversion, puede utilizar svn:externals hacer referencia a los archivos comunes en ambos proyectos. Luego puede editar los archivos comunes en un solo lugar, y si hace un svn up, todos estarán sincronizados.

+0

He usado este enfoque y funciona bastante bien. Aún así, sería bueno si hubiera una forma de definir algún tipo de JAR JSP que pueda tratar como una dependencia. –

12

He estado luchando con el mismo problema durante mucho tiempo, y finalmente tropecé con una buena solución: "Carpetas enlazadas". Esta es una función de Eclipse que funciona de manera similar a los enlaces simbólicos: le permite asignar una única carpeta física en múltiples proyectos. Lo bueno de esta solución es que no requiere ningún paso de compilación especial, por lo que Eclipse puede implementar automáticamente cambios en su servidor Tomcat local para realizar pruebas.

Mi configuración es la siguiente: Tengo un proyecto de Eclipse llamado "SharedContent". Dentro del directorio WebContent, hay un subdirectorio "shareRoot". Todos los archivos reutilizables - .jsp, .css, etc. - se encuentran en algún lugar en SharedContent/WebContent/shareRoot. Este es un proyecto web dinámico para que todos los editores apropiados estén habilitados, pero nunca lo construyo ni lo despliego.

En mis otros proyectos, agrego una carpeta vinculada que apunta a shareRoot. En Eclipse 3.6, los pasos son:

  1. En el Explorador de paquetes, haga clic en el directorio WebContent del proyecto, que debe incluir los archivos reutilizables.

  2. Seleccione Nuevo -> Carpeta.

  3. Haga clic en el botón "Avanzado >>>".

  4. Seleccione el botón de opción "Enlace a la ubicación alternativa (carpeta enlazada)".

  5. En el cuadro de texto justo debajo de esto, haga clic en Examinar.

  6. En su árbol de fuentes, navegue a SharedContent/WebContent/shareRoot. A continuación, haga clic en Aceptar/Abrir/Finalizar botones hasta que todos los cuadros de diálogo se vayan.

El contenido compartido está ahora asignado a su proyecto. Curiosamente, debe incluir "shareRoot /" en la URL al hacer referencia a estos archivos, pero puede solucionarlo utilizando su filtro de reescritura de URL favorito.

Puede utilizar un truco similar en el árbol fuente de Java para mapear archivos Java en múltiples proyectos. Empecé a hacer eso, en lugar de crear el código compartido en un archivo .jar, porque evita la necesidad de reconstruir el .jar cada vez que desea probar un cambio en su servidor Tomcat local.

-1

jaja, i u dar una sorpresa tarde

soy chino, mi Inglés es pobre, pero puede ayudar a u.

Olaf Kock tiene razón, pero su respuesta no es perfecta.

Aquí está la respuesta perfecta. tienes que referir la url de seguimiento, puede ayudarte.

click here

en el URL de la página, el ejemplo para el cuadro de contenido de la propiedad no es exacta, u me fllow:

si necesidad de compartir un archivo:

a.jsp svn://myhome.com/svn/myproject/trunk/a.jsp 

si es necesario compartir una carpeta:

xml svn://myhome.com/svn/myproject/trunk/xml 
Cuestiones relacionadas