que tienen un proyecto que utiliza "sistema" para especificar el alcance de un archivo JAR incluido en WEB-INF/lib
dir de mi proyecto. Este artefacto no está en ninguno de los repositorios de maven, así que debo incluirlo como parte de mi proyecto. Lo hago con lo siguiente:Maven exec plugin- ¿cómo incluir classpath "sistema"?
<dependency>
<groupId>com.example</groupId>
<artifactId>MySpecialLib</artifactId>
<version>1.2</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/MySpecialLib-1.2.jar</systemPath>
</dependency>
Esto ha funcionado muy bien para la mayoría de las cosas.
pero ahora estoy tratando de ejecutar un código en la línea de comandos (fuera de mi aplicación web, a través de un método main()
He añadido) y mvn exec:java
no puede resolver el código en MySpecialLib porque no está incluido en el "tiempo de ejecución" classpath.
¿Cómo puedo ya sea:
- complemento MySpecialLib a la ruta de clase en tiempo de ejecución
o
- decir
mvn exec:java
utilizar también la ruta de clasesystem
?
He intentado mvn exec:java -Dexec.classpathScope=system
, pero eso deja fuera todo lo que está en runtime
.
El problema con añadirla a tu repositorio local es que está fuera de la vista y de la mente - Es fácil olvidar que es algo personalizado que has agregado a tu construcción y que es fácil de perder. También otros desarrolladores en su equipo deben ser instruidos para hacer la misma instalación manual. Nexus es un martillo gigante de una solución para lo que debería ser un problema simple: agregar un artefacto personalizado a tu construcción. Sin embargo, estoy de acuerdo contigo en el mundo del dolor. :-) –
He escrito makefiles que script instalar en el repositorio local para que sea inolvidable. Además, nexus gratuito es un pequeño martillo que proporciona una gran cantidad de características útiles, en mi opinión. – bmargulies