Что касается зависимости, я просто использую maven dependency copy plugin и копирую все зависимости в ./lib папку и поставляю сценарий запуска, который использует class path wildcard (таким образом вы можете изменять свои зависимости столько, сколько хотите, и не имеете для изменения сценария запуска). Что касается конфигурационных файлов, я поместил их в папку ./config и снова включил его в путь к классам приложения в сценарии запуска (первый, по общему признанию, работает только для> java 1.6).
Таким образом, в конце концов почти все мое приложение имеет следующую структуру:
mystuff.jar launch.sh
./lib
./config
Тогда я просто застегивать все это и дать его своим пользователям. Весь процесс, вероятно, легко автоматизировать с помощью maven, но я признаю, что делаю это вручную: p
Если вы предпочитаете и разрешаете лицензии, вы также можете просто связать все зависимости в одну банку (с расширенными зависимостями внутри) с использованием assembly plugin. Это, как правило, делает банку громоздкой и дает пользователям обновленное приложение. труднее. Кроме того, у меня были проблемы с ним несколько раз из-за того, что файлы классов перезаписываются или что-то еще, поэтому я лично придерживаюсь папки ./lib.