En mi proyecto Maven hay un módulo (núcleo) que tiene algunos recursos para sus clases. Al ejecutar clases dentro del módulo es capaz de obtener sus propios recursos. Todo funciona bien¿Usa los recursos de una dependencia?
Donde se rompe material es cuando otro módulo que depende del núcleo intenta ejecutar esa clase. La carpeta en la que Java está buscando recursos es este módulo, no el módulo principal. Entonces la clase falla
En resumen: ¿Cómo puedo acceder a los recursos de una dependencia?
He experimentado con tratando de hacer esto al declarar en el JAR del Núcleo Manifiesto Class-Path: .
. Sin embargo, cuando una lista de los recursos disponibles con JSHookLoader.class.getClassLoader().getResources("");
(JSHookLoader está en Core si significa algo), me sale:
Resource: W:\programming\quackbot-hg\impl\target\classes
File rebel.xml
Resource: W:\programming\maven-repo\org\quackbot\core\3.5-SNAPSHOT
File core-3.5-SNAPSHOT.jar
File core-3.5-SNAPSHOT.pom
File maven-metadata-local.xml
File _maven.repositories
Por supuesto, esto complica las cosas como esperaba el JAR sí para estar en la ruta de clases, no el directorio del JAR está en
¿Alguna sugerencia?
Volviendo a este proyecto, sigo teniendo este problema. Otras guías han hablado sobre el uso de maven-assembly-plugin y el plugin de recursos remotos, pero eso es muy molesto ya que todos los módulos deben incluir el plugin XML de monstruos.
¿Por qué no simplifico la pregunta a esto: cómo puedo agregar un JAR de dependencias a la lista de recursos?
- core.jar tiene algunos recursos en la carpeta/recursos. Ejecutando core.jar puedo ver/recursos en la lista de recursos.
- impl.jar depende de core.jar. Al ejecutarlo,/resources no está en la lista de recursos y por lo tanto causa estragos.
Esto debería ser lo suficientemente simple, pero ¿cómo puedo hacerlo? Me he pasado horas tratando de encontrar una forma simple y limpia de hacerlo, pero fue en vano.
¡Muchas gracias por publicar su solución! Tengo este problema exacto y he encontrado una respuesta ... pero estaba escrito en términos de maven, y estaba luchando por descifrarlo. – CaffiendFrog
Tenga cuidado con las dependencias circulares al usar esto. Puede tener dificultades para liberar. – Michael