plugin - Encontrar el camino de clases mínimo necesario de Java
maven-assembly-plugin (4)
¿Hay alguna herramienta para detectar archivos jar innecesarios?
Por ejemplo decir que tengo myapp.jar, que puedo iniciar con un classpath que contiene hibernate.jar, junit.jar y easymock.jar. Pero en realidad funcionará bien usando solo hibernate.jar, ya que el código que llama a junit.jar no es accesible.
Me doy cuenta de que la reflexión podría complicar las cosas, pero podría vivir con una herramienta que ignoraba la reflexión. Excepto por eso, parece un problema relativamente simple de resolver.
Si no existe tal herramienta, ¿cuáles son las mejores prácticas para decidir qué dependencias se necesitan? Me parece que debe ser un problema común.
¿Has echado un vistazo al Buscador de Dependencias?
http://depfind.sourceforge.net/
Una lista práctica de la mayoría de las otras herramientas de dependencia de Java disponibles también está disponible en ese sitio.
Algo para agregar a la respuesta de Bill K: es posible que no uses la reflexión en absoluto, pero los JAR que estás usando podrían. Recuerdo haber encontrado algo así con xalan & xerces, donde se ha lanzado una ClassNotFoundException en el tiempo de ejecución.
Esto no es posible en un sistema que podría usar la reflexión.
Dicho esto, una herramienta de análisis estático podría hacer un buen trabajo si no utiliza CUALQUIER reflejo.
He usado
http://code.google.com/p/jarjar/
y me pareció bastante bueno.
Además, descubrirás si has roto cualquier reflejo fácilmente si tienes un buen conjunto de pruebas de unidad / aceptación :).