Mi primera reacción fue no utilice env.CLASSPATH, pero pensándolo bien y pensando en por qué uno no debe hacerlo empecé likeing la idea, al menos por un desarrollo local y entorno de prueba (y por lo menos por un tiempo)
el ventaja de este enfoque es que se puede mantener a una carpeta local con todas sus bibliotecas comunes (log4j, dom4j, tiempo de joda, colecciones de Google, el apache commons zoológico, .. .). De modo que puede compilar y ejecutar todas sus aplicaciones desde el shell sin perder tiempo escribiendo argumentos largos de classpath.
Y su aún libre usar un argumento -cp
, porque reemplaza la configuración global CLASSPATH
.
Nunca lo usaría en un sistema de producción. El riesgo es tan alto que alguien cambia el contenido de esa carpeta o la variable CLASSPATH
y mi aplicación ya no funciona.
Así que para la producción, no 'CLASSPATH' global y no hay comodines en la cadena de ruta de clases.
desventaja de utilizar la ruta del comodín en un entorno como el anterior: después de un tiempo, demasiados proyectos dependen de la carpeta de la biblioteca individual. No conoce los efectos secundarios de actualizar una biblioteca o eliminar una anterior. Y para aplicaciones grandes, puede ser difícil averiguar qué bibliotecas de la agrupación realmente se necesitan.Puede terminar agregando librerías no utilizadas al producto solo porque no está seguro si la aplicación se ejecutará sin esa lib.
Así que mi conclusión: un buen atajo para el desarrollo, las pruebas, la creación de prototipos pero arriesgado para la producción. Para producción preferiría cadenas de clase (autogeneradas) sin comodines.
fwiw, mi carpeta lib es regenerada por mi compilación maven de mis dependencias utilizando el complemento appassembler como parte de la fase de empaquetado. Mi POM es el documento final para definir el classpath. –