Есть несколько возможных способов сделать это, и в зависимости от вашей конкретной ситуации и требований, некоторые могут быть лучше, чем другие.
во всех случаях я настоятельно рекомендую систему, которая понимает номера версий.
классическим способом сделать это было бы использование maven.Кроме того, он очень хорошо интегрирован в Eclipse, и вы можете структурировать свои модули как часть одного родительского проекта, такого как:
project-parent
project-website1
project-website2
project-controllers
project-model
[...]
внутри, тогда эти модули могут зависеть друг от друга.Вы можете зайти так далеко, что отделяете интерфейсы от реализации:
project-parent
project-website1
project-website2
project-api
project-api-impl
[...]
, а затем большую часть времени зависит от модуля API.В maven также есть несколько механизмов для работы с файлами WAR.
этот (однопроектный) подход, вероятно, идеально подходит для очень небольшой команды разработчиков.главный недостаток заключается в том, что выпускать вещи по отдельности довольно непрактично - исправление в реализации, затрагивающее только сайт2, также потребует выпуска сайта1.
Кроме того, разделение в этом смысле менее очевидно, что делаетпотенциально слишком легко перемещать вещи в общие модули, которых на самом деле не должно быть.
другой шаблон будет:
project1-parent
project1-webapp
project1-specifics
[...]
project2-parent
project2-webapp
project2-specifics
[...]
common-parent
common-api
common-impl
common-model
[...]
это делает разделение немного более четким, и вы можетеотпустить вещи отдельно.также (хотя это, вероятно, не рекомендуется при нормальных обстоятельствах), project1-webapp может зависеть от более старой или более новой версии общего модуля, чем project2-webapp.maven можно найти здесь:
https://maven.apache.org/
другой набор инструментов, который может помочь вам справиться с управлением версиями:
https://gradle.org/
, чтобы максимально использовать их, вы также можете захотеть использоватьgit with gitflow:
http://git-scm.com/
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow/
и поймите, как использовать это для управления версиями и выпусками.
лично, мне показалось ОЧЕНЬ запутанным, когда я только начинал - но теперь все это имеет большой смысл.