Ответы различаются в зависимости от того, что вы создаете.
Если вы создаете библиотеку, лучше всего распространять вашу работу в виде jar-файла. Можно сослаться на ваши зависимости jar через атрибут Class-path в вашем манифесте jar, хотя я обычно думаю, что это не круто. Этот атрибут был разработан для апплетов, и он довольно редко используется в библиотеках, поэтому, когда этот метод помещает материал в путь к классам (особенно распространенный материал, который пользователь уже может использовать), вы можете получить неожиданные конфликты версий. И трудно отследить, почему вы их видите.
Публикация jar в репозитории Maven с информацией pom для отслеживания зависимостей также является отличным выбором для библиотек. Если вы это сделаете, пожалуйста, опубликуйте ваши координаты Maven в ваших документах!
Если вы создаете приложение, два популярных варианта - распространять zip / tar / что-либо из структуры развертывания ИЛИ использовать программу установки. Если программа представляет собой серверную вещь, первая встречается гораздо чаще. Последнее чаще встречается у клиентов. Как правило, программа установки просто планирует структуру развертывания и, возможно, выполняет некоторые дополнительные задачи, такие как установка в определенных местах ОС.
Чтобы построить структуру развертывания (она же «комплект»), вы захотите создать повторяемый процесс в любой системе сборки, которую вы используете. У Ant есть обильные примеры этого, а у Maven есть плагины сборки, которые могут помочь. Как правило, вы захотите включить банку своего кода, любые зависимости, сценарии для запуска программы, возможно, JRE, и любые другие ресурсы, которые вам могут понадобиться.
Если вы хотите создать установщик, есть много вариантов, как бесплатных, так и коммерческих. У некоторых людей, которых я знаю, недавно был хороший опыт использования бесплатного IzPack , но проверьте свои возможности.