Soy nuevo en Java y en Maven, por lo que es muy simple.¿Cómo puedo empaquetar y ejecutar una aplicación de línea de comandos simple con dependencias usando maven?
Si sigo el maven2 hello world
instrucciones aquí:
http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
todo funciona bien. Si luego modifico pom.xml
para generar una dependencia desde un repositorio remoto, los archivos de esta dependencia se almacenan en ~/.m2/repository/new-dependency/
.
Uso de la sintaxis en los hello world
instrucciones para ejecutar la aplicación requiere que añado la ruta absoluta a la dependencia a mi ruta de clases (ya sea estableciendo la variable de entorno o mediante el modificador de línea de comandos):
java -cp target/my-app-1.0-SNAPSHOT.jar:/.../.m2/.../new-dependency.jar com.mycompany.app.App
Obviamente, esto se volverá difícil de manejar rápidamente :)
Sospecho que esta no es la forma habitual de ejecutar un programa Java y que solo necesito leer más acerca de los archivos .jar, pero mientras lo hago, agradecería cualquier consejo. sobre cómo hacer esto correctamente
No estoy usando un IDE, por cierto. vim desde la línea de comando.
Gracias!
Mike.
Esto funciona después de un poco de modificación: – mdtsandman
Para hacer que esta solución funcione, necesitaba agregar classpathMavenRepositoryLayout = true y classpathPrefix =/home /.../. M2/repository/a la sección de manifiesto también porque el comportamiento predeterminado es simplemente poner el nombre del jar en el manifiesto (sin referencia a su ubicación en el sistema de archivos). – mdtsandman
Sí, el comportamiento predeterminado espera que las dependencias estén en el mismo directorio de su jar principal. Como tiene dependencias en su repositorio local, con su solución, el jar puede ejecutarse desde cualquier lugar de su sistema. – iruediger