Я только что понял, что maven и eclipse уже решили именно эту проблему для очень специфического «инструмента»: тестового кода.
Тестовому коду часто нужны дополнительные зависимости, не используемые самим приложением.
Очевидно, что люди вложили немало средств, чтобы сохранить инфраструктуру «test / tool» в одном проекте, в отличие от создания отдельного проекта test:
- отдельных исходных расположений (src / main / java,src / test / java)
- отдельные расположения ресурсов (src / main / resources, src / test / resources)
- полномасштабная отдельная область зависимостей maven "test", в комплекте с транзитивным разрешением
- отдельные этапы компиляции (компиляция / тестирование) с отдельными деревьями зависимостей
- eclipse поддерживает специальные конфигурации запуска junit, которые способны правильно разрешать тестовые зависимости
- возможно, больше вещей, которые яя не знаю в настоящее время
Итак, я настоятельно планирую запрограммировать все свои вспомогательные инструменты как "jмодульные тестовые случаи ".
Я планирую создать и зафиксировать общие конфигурации запуска junit для команды, которая выполняет только один конкретный" тестовый случай ", который будет запускать логику инструмента вместо тестирования.
Проблема, которую я должен решить, состоит в том, чтобы не запускать эти фиктивные тесты во время обычной фазы тестирования maven.
Кроме того, когда я пишу это, я понимаю, что уже существует даже другая такая система: инфраструктура плагинов maven,это также имеет отдельный механизм разрешения зависимостей.Хотя пока что кажется необходимым или нормальным создавать отдельные проекты для создания плагинов.Я рассмотрю способы написания и создания конкретных подключаемых модулей maven без необходимости создавать отдельные проекты.Я думаю о создании pom.xml, необходимого для компиляции плагинов на лету, и включении всех тестовых зависимостей.