modulos
tengo un aplicativo grande y cada modulo es un jar, hay una mejor manera de hacerlo????
- hackchan's blog
- Inicie sesión o regístrese para enviar comentarios
tengo un aplicativo grande y cada modulo es un jar, hay una mejor manera de hacerlo????
Comentarios
Re Módulos
Podrías echarle un vistazo a esto: http://javalangnullpointer.wordpress.com/2007/03/21/crear-un-unico-jar/
Pues depende. A mi me parece
Pues depende. A mi me parece que tener un jar por módulo esta bien, pero al parecer te esta causando algún problema ¿Que problema es ese?
Quizá podrías usar Maven si tu problema es de dependencias para construir la aplicación.
yo así le hago
Yo tengo una aplicación que es igual por módulos donde cada módulo es un jar, y para cada deployment hay combinaciones diferentes de módulos (o se agregan módulos nuevos a un deployment existente, se actualizan otros etc).
En algún momento sí se volvió un relajo manejar tanto jar y mejor decidí que para desarrollo está bien tener los jars separados pero para deployment mejor hago un mega-jar que contiene los módulos necesarios. Dado que el build de la aplicación lo hago con Gradle, fue muy fácil agregar una tarea que empaque el mega-jar a partir de una lista de módulos.
suena bien
si el relajo nos es en dearrollo es el manejo de tanto jar en produccion,la idea es que el paso a produccion sea algo minimo y sencillo, que si actualizo un solo modulo la puesta en produccion sea minima, ezamudio podrias darnos un ejemplo del uso de gradle para crear un super jar , en tu caso si hay una actualizacion de un modulo como es el paso a produccion?? recompila todo? como es el proceso
sí
Con una línea de código que modifiques de cualquier módulo involucrado, obvio tienes que regenerar el jar para deployment.
En mi caso tengo una estructura así:
Directorio raíz del proyecto con un
build.gradle
ysettings.gradle
indicando todos los subdirectoriosAhora imagínate que tienes subdirectorios a, b, c, d. Un deployment d1 requiere módulos a,b,d y otro llamado d2 requiere b,c,d.
En el build.gradle raíz definí algo así:
uno:[':a', ':b', ':d'],
dos:[':b', ':c', ':d']
]
gradle.projectsEvaluated {
jars.each { mijar, proyectos ->
task "pack-${mijar}"(type:Zip) {
description="Crea el JAR para ${mijar}"
dependsOn ':loQueDependanTodos'
proyectos.each {
dependsOn "${it}:build"
from(project(it).sourceSets.main.output.classesDir)
}
destinationDir='/tmp/' as File
archiveName="${mijar}.jar"
}
}
Con lo anterior, corres
gradle pack-uno
y va a compilar los subproyectos a, b y d; luego va a empaquetar el uno.jar que contiene todo lo que tengan los proyectos a, b y d.si el jar a
si el jar a por ejemplo depende de varios jar por ejemplo jdbc.jar jxml.jar ?????
eso es otra cosa
Gradle te maneja las dependencias a la hora de construir tus módulos, no a la hora de empaquetar software. Probablemente podrías hacer que las copie a un directorio para saber exactamente qué cosas poner en el deployment. Mmmmmm no es mala idea, pero no he hecho algo así.