Структура для проекта Java с несколькими основными точками входа и исполняемыми файлами? - PullRequest
4 голосов
/ 12 января 2012

Я пишу сервер на Java.Для поддержки разработки сервера у меня есть несколько классов с методами main (), которые я намерен запускать из командной строки в качестве инструментов разработки для выполнения таких задач, как диагностика, моделирование клиентских подключений и модули упражнений в отрыве от остальныхсервер.В настоящее время эти классы являются частью основного проекта сервера.

Каков наилучший подход для структурирования моего проекта для поддержки этих нескольких исполняемых инструментов?Должен ли я создавать отдельные проекты для этих инструментов моделирования / загрузки / диагностики или сохранять их в главном проекте сервера?Если я оставлю их в основном проекте, должен ли я настроить проект на создание нескольких исполняемых jar-файлов или одного jar-файла с несколькими точками входа?Если используется один jar-файл, можно ли указать первичную точку входа для сервера по умолчанию?

1 Ответ

8 голосов
/ 12 января 2012

Если сервер и утилиты не имеют абсолютно разных зависимостей, я бы упростил и поместил все в одну банку.Предоставьте сценарии оболочки, которые обертывают вызовы для соответствующих классов:

# startServer.cmd
java -cp MyServer.jar;other.jar com.foo.myserver.Main

#showDiagniostics.cmd
java -cp MyServer.jar;other.jar com.foo.myserver.Diagnostics

Вы можете сделать его исполняемым файлом jar с классом запуска сервера в качестве основного класса, но мне легче иметь исполняемый скрипт, чемдолжен использовать java -jar MyServer.jar

...