Pregunta

Estoy creando un proyecto de línea de comandos de Java, sin GUI. El proyecto utiliza cualquier número de proyectos de código abierto: Spring, Logback, Commons CLI, etc. Cuando comencé a pensar en el empaque, imaginé que saldría como un archivo zip, que podría explotarse al fras. y frascos dependientes en la lib.

adapter.jar
 /lib/dependencyA.jar
 /lib/dependencyB.jar 
 etc.  

He estado jugando con Maven Assembly, pero todavía no sale como lo anterior, y no he encontrado ningún ejemplo que genere la estructura anterior. ¿Es posible hacerlo? Además, tener una estructura de múltiples módulos agrega otra capa de complejidad que no he podido resolver, ya que el módulo de ensamblaje no puede encontrar el módulo de núcleo como una dependencia. Este es mi primer proyecto Maven, así que todavía estoy aprendiendo cómo funciona Maven. He pasado por el libro de Sonatype, pero me perdí algo ya que incluso usar la sección de mejores prácticas no pudo resolver la dependencia que falta. Los ejemplos que he visto generalmente implican fusionarse en un frasco ejecutable Uber, algunos de los cuales usan el proyecto de sombra, algunos no. Mi pregunta es, ¿es una buena idea hacer un frasco Uber que incluya libres de terceros como la primavera, etc.? ¿O debo perseverar con mi plan de subdirectorio Zip / Lib original?

¿Fue útil?

Solución

Haga que su módulo de ensamblaje dependa de los módulos que desea empaquetar y luego use elu003CdependencySets> deu003CmoduleSets> Etiquetas para incluirlos en cualquier diseño que desee. Si tiene otros archivos que no provienen de una dependencia, puede colocarlos en el módulo de implementación en sí.

Por favor, lea bien los documentos del descriptor de ensamblaje. Puede empacar, desempaquetar, incluir/excluir y establecer permisos para los archivos en su ensamblaje.

En caso de que no hayas visto el libro de Sonatype en Maven, aquí está el capítulo relevante: http://www.sonatype.com/books/mvnref-book/reference/assemblies-sect-best-practices.html

Editar: escapó de los <'s

Otros consejos

Solo necesita ser más específico en su descriptor de ensamblaje. Use un dependencyset que incluya solo el frasco principal y lo entregue a la parte superior, y otro que excluya solo el frasco principal y entrega al directorio de lib.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top