Здесь есть два аспекта.Технический: как это работает?Организационные: это хорошая идея?
Техническая довольно легко.Вы просто создаете разные проекты.Проект приложения зависит от проекта библиотеки.Библиотеки обычно упакованы в банки.Проще всего было бы использовать инструмент, который поддерживает вас с зависимостями и различными версиями библиотеки.Я бы порекомендовал Maven для этого.
Второй вопрос сложнее и, вероятно, относится к https://softwareengineering.stackexchange.com/, так как это скорее философский вид, и однозначного ответа не существует.На мой взгляд, это плохая идея - одновременно создавать библиотеку и продукт.Детали вашего продукта будут добавлены в библиотеку, у вас возникнут проблемы с приоритетами.
То есть, когда вы разрабатываете библиотеку, которую следует использовать или опубликовать независимо от вашего приложения.Модуляризация приложения - это еще одна чашка чая, но ее можно выполнить с помощью тех же инструментов.Тогда с Maven вы настроите многомодульный проект.