Используя Ant в качестве инструмента сборки, вы можете упаковать свой проект любым удобным для вас способом. Однако, оставляя части вашего кода вне дистрибутива, кажется, что это может привести к ошибкам; Вы можете случайно пропустить необходимые классы (по-видимому, все ваши классы необходимы).
В отношении хранения вашего кода в разных проектах у меня есть свободная инструкция. Сохраните код, который изменяется вместе, в одном проекте и упакуйте его в свой собственный файл jar. Это работает лучше всего, когда часть вашего кода можно разбить на служебные библиотеки, которые меняются реже, чем ваше основное приложение.
Например, у вас может быть приложение, в котором вы сгенерировали классы клиентов веб-службы из WSDL веб-службы (используя что-то вроде библиотеки Axis). Интерфейс веб-службы, вероятно, будет меняться нечасто, поэтому вы не хотите, чтобы шаг регенерации повторялся все время в основной сборке приложения. Создайте отдельный проект для этой части, чтобы вам приходилось заново создавать клиентские классы веб-службы только при изменении WSDL. Создайте отдельную банку и используйте ее в своем основном приложении. Этот стиль также позволяет другим проектам повторно использовать эти служебные модули.
Следуя этому стилю, вы должны поместить номер версии в манифест jar, чтобы вы могли отслеживать, какие приложения используют какие версии вашего модуля. В зависимости от того, как далеко вы хотите зайти, вы также можете сохранить текстовый файл в банке, в котором подробно описаны изменения, произошедшие для каждой ревизии (во многом как библиотека с открытым исходным кодом).