modulos

tengo un aplicativo grande y cada modulo es un jar, hay una mejor manera de hacerlo????

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Re Módulos

Podrías echarle un vistazo a esto: http://javalangnullpointer.wordpress.com/2007/03/21/crear-un-unico-jar/

Podrías postear tus preguntas en el foro de discusión, en vez de usar tu blog.  :D 

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.

Imagen de ezamudio

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

Imagen de ezamudio

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 y settings.gradle indicando todos los subdirectorios

Ahora 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í:

Map jars=[
  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 ?????

Imagen de ezamudio

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í.