2011-12-17 20 views
12

Me interesa saber cómo distribuir una aplicación Java que tenga muchas dependencias (especificada en un pom.xml en Maven).Creación de una aplicación Java que descarga sus propias dependencias

Obviamente, sería posible empacar todo en un gran archivo .jar. Sin embargo, eso parece un desperdicio, ya que una actualización de la aplicación también requeriría enviar una nueva copia de todas las dependencias.

Así que estoy buscando una manera de distribuir la aplicación que hace lo siguiente:

  • incluye sólo el uso de la base en el archivo .jar principal
  • Descargas dependencias según sea necesario cuando el archivo .jar se ejecuta
  • mantiene copias de las dependencias a nivel local, por lo que si se distribuye una actualización de la aplicación de las dependencias no necesitan ser descargada de nuevo

Cuál es la mejor wa y de lograr esto?

+0

Antes de que alguien sugiera eso, OSGi parece ser una exageración aquí, pero creo que tiene estas buenas características de descarga y actualización de paquetes sobre la marcha, incluso sin reiniciar. –

+0

Esto no lo ayuda en este momento, pero pensé que mencionaría que hay trabajo en curso para resolver este problema en el nivel de JDK. Se llama Project Jigsaw y actualmente está programado para incluirse en JDK 8. Obtenga más información al respecto aquí: http://openjdk.java.net/projects/jigsaw/ – ivantod

+0

@ivantod: Tres años después. JDK 8 está fuera. Sin Jigsaw todavía. Aún en la hoja de ruta, sin embargo. – Thilo

Respuesta

2

puede distribuir su archivo usando web start technology (también distribuya un archivo jnlp). Creo que esto manejará la mayor parte de esta funcionalidad, incluida la capacidad de actualización.

+0

Vea también [Java Web Start] (http: // stackoverflow .com/tags/java-web-start/info) información de la etiqueta, que incluye el enlace anterior y 8 más, así como una descripción 'desarrollada' de JWS. –

3

¿Puede simplemente usar Maven, con algo como se describe en Maven Run Project?

Así es como tengo algunas de las configuraciones de mis propias aplicaciones dentro de mi propia red. Nunca tuve que preocuparme por jugar con classpaths o descargar/proporcionar dependencias para la configuración de programas como esta durante mucho tiempo. Este enfoque también cumple con todos sus criterios.

+0

sí, y posiblemente una envoltura alrededor de maven para que los usuarios no tengan que lidiar con eso. Empujar las actualizaciones solo estaría cambiando unos pocos poms y el maven se ocupará del resto. – milan

Cuestiones relacionadas