Недавно, читавши одну з книг, відкрив для себе maven-assembly-plugin.
Заадача була такою: є якась консольна утилітка (jar файлик), який потрібно запускати з командного рядка, і все б нічого, але ця утилітка має купу залежностей на інші jar Файли. Перечитувавши одну книгу, натрапив на чудовий підхід: додаємо до pom.xml в dependencies dependency на maven-assembly-plugin, потім пишемо в консолі команду: mvn assembly:assembly і після її успішного виконання отримуємо два jar файли - один звичайний, а другий під назвою <назва проекту>-jar-with-dependencies.jar, який містить всі класи із потрібних jar файлів. Даний файл буде запускатись незалежно, без інших jar файлів.
От і маємо щастя, якби не одне але...
Якщо потрібні jar файли містять деякі ресурсні файли, які потрібні для Вашої утилітки, причому файлик ресурсів з однаковою назвою та різним контентом міститься в різних jar файлах - то тут і вилазить приховане зло:
Даний плагін додає в файл <назва проекту>-jar-with-dependencies.jar перший ресурсний файл, а всі решта ігнорує(чи навпаки при зустрічі кожного такого файлу перезаписує його в файл <назва проекту>-jar-with-dependencies.jar) - не факт що в результаті отримаєте в джарці той файл, який очікувався.
От така от проблема.
В результаті я вирішив цю проблему наступним чином:
1) Використав плагін maven-dependency-plugin замість maven-assembly-plugin.
2) Запускаю команду: mvn clean dependency:copy-dependencies install.
3) Отримую classpath для проекту: mvn dependency:build-classpath
4) Додаю до параметрів запуску згенерований classpath.
Ось так.