Да, но не совсем. Вы можете взять все свои зависимости, распаковать их и просто слить их в большую банку. Это то, что делает плагин maven jar, если вы создаете jar с зависимостями. Единственная проблема заключается в том, что это может привести к конфликту файлов (предположим, что две ваши зависимости содержат log4j.properties). Это одна из проблем, возникающих, например, с некоторыми из библиотек Spring.
Я думаю, что кто-то на самом деле написал загрузчик классов, который позволяет вам связать всю банку внутри вашей банки и использовать ее как есть. Я не уверен, насколько он взрослый, и в данный момент не могу вспомнить имя.
Я думаю, вам лучше распределять все ваши зависимости отдельно. Настроить classpath довольно сложно, но к этому времени Java-программисты наверняка уже привыкли. В простых случаях вы можете добавить зависимости к заголовку Class-Path в файле манифеста . Большие библиотеки должны полагаться на путь к классам, настроенный для них.
Что касается второй части вашего вопроса, то, вероятно, достаточно удалить каталог conf / в META-INF, чтобы поднять его содержимое. Я не уверен в этом. Я уверен, что он всегда будет поднят, если вы положите его содержимое на верхний уровень банки. В любом случае это проблема распространения. Вы можете легко иметь каталог conf/
внутри своего исходного кода, и ваши сценарии сборки (независимо от того, что вы используете) копируют файлы в него, куда вам удобнее.
Что касается настройки ваших пользователей. Попытайтесь установить некоторые соглашения, чтобы они настраивали как можно меньше. Для вещей, которые должны быть настроены, лучше всего иметь базовую конфигурацию по умолчанию, а затем позволить пользователю переопределять и добавлять опции через его / ее собственный файл конфигурации.