2012-02-23 30 views
5

Nuestro grupo es algo nuevo en el desarrollo basado en JVM. Estamos desarrollando aplicaciones que están compuestas por muchas otras bibliotecas.Gestión de dependencias con aplicaciones Play 2.0

Creemos que Play Framework es muy atractivo para el desarrollo de aplicaciones web. El marco es genial, pero la gestión de la dependencia de nuestras bibliotecas desarrolladas localmente es algo irritante. Estamos utilizando el RC2 de Play 2.0, y si bien somos capaces de obtener cambios en nuestras bibliotecas cargadas en Play, definitivamente es un proceso incómodo que interrumpe el proceso de reproducción normalmente fluido.

Lo que estamos haciendo es empujar nuestras bibliotecas a nuestro repositorio Maven local (en cada máquina de desarrollador) y luego importar esas mismas bibliotecas de nuevo al proyecto Play. Funciona, pero como dije, es incómodo.

¿Hay alguna de las mejores prácticas que deberíamos emplear que haga que esto funcione de una manera más fluida?

Fwiw, estamos usando IntelliJ 11,0 (Ultimate)

============ ============ EDITAR

I' Estoy obteniendo buenas respuestas sobre cómo mejorar mi proceso de compilación Maven, y lo aprecio. Sin embargo, esta no es exactamente la respuesta que estoy buscando.

Para hacer esto concreto, suponga que estoy creando un Servicio y una Aplicación Web para supervisar/administrar el servicio. ¡El servicio es un proyecto simple de Java/Scala y la aplicación web es un juego! proyecto. Llamaremos a estos 'Servicio' y 'Aplicación'. (Por favor, no se deje engañar por esta estructura propuesta, la estoy simplificando para los fines de la pregunta)

En Eclipse o IntelliJ, puedo agregar el Módulo de 'Servicio' (o Proyecto para Eclipse) como una dependencia de el proyecto 'App'. Esto permite un cambio de desarrollador muy rápido al realizar cambios en la biblioteca 'Servicio' (por ejemplo, agrego una propiedad a un modelo). Recompilar y ejecutar es un par de órdenes de magnitud más rápido que compilar, empaquetar, implementar, importar y volver a cargar el navegador.

Basado en mi lectura de la documentación de Play 2.0 y SBT, mi única respuesta real es hacer de 'Service' un proyecto secundario de 'App'. ¿Hay una mejor respuesta para esto?

Respuesta

1

Tiene 2 opciones.

El primero, como Rich mencionó, es un repositorio local. Eso no significa la carpeta local en su máquina de desarrollo que maven crea como un caché local y usted está usando. Significa un servidor central en su LAN donde almacena las versiones de las aplicaciones para reproducir más tarde. Nexus, según lo recomendado por Rich, es una gran opción.

La segunda opción es simplemente crear sus archivos jar y desplegarlos como bibliotecas no administradas en su carpeta "lib". Luego puede comprometerlo con su sistema de administración de origen y todos los desarrolladores tendrán el mismo.

Recomiendo el primer enfoque, mucho mejor a largo plazo, pero es su elección.

EDITAR EN COMENTARIO indica que no desea administrar dependencias. El único tercer escenario que puedo imaginar es que quieres tener todo el código como un bloque. En ese caso, puede usar subprojects. No veo otras alternativas.

+0

Aprecio lo que dices, pero todavía estás tratando de mejorar un proceso que estoy tratando de eliminar. Voy a editar la pregunta para aclarar esto un poco. –

+0

@AndyDavis ver actualización –

+0

Gracias de nuevo por su entrada. Si pudieras echar un vistazo a mi ejemplo y ver si los subproyectos son el camino a seguir, te lo agradecería. –

0

Jugar tiene un gran interés en la mayoría de los casos. Pero, hay un caso en el que Play podría no ser la mejor solución, exactamente el problema que está señalando: cuando hay otros componentes, libraires para integrar en la aplicación.

No digo que no sea posible, simplemente no es la forma en que Play ha sido concebido.

+0

lo siento, pero eso es FUD. Play 2.0 usa sbt para administrar dependencias, y las diferencias en esta área entre maven, sbt o ivy son casi nulas. Entonces, ¿están todos los proyectos que usan alguno de ellos mal? :) –

+0

Puede que no tenga suficiente experiencia con Play2, pero ciertamente fue el caso de Play 1.x. –

1

Quizás deberías presionar a un espejo/proxy Maven local como Nexus.

+0

Ya tengo un repositorio local. No estoy buscando mejorar eso tanto como lo estoy buscando para eludirlo (al menos para el desarrollo) –

Cuestiones relacionadas