У меня есть многомодульный проект Maven. Для этого примера рассмотрим два модуля:
dataconsumer
Модуль consumerимеет модуль dataкак зависимость.
Модуль dataобъявляет набор основных классов. Есть тесты под src/testто, что их используют. Эти тесты требуют сложного создания объектов, поэтому у меня есть класс с некоторыми служебными методами для создания этих объектов. Этот служебный класс ( SampleDataHelper) находится в src/testиерархии.
У меня также есть несколько тестов в consumerмодуле, которые должны создать некоторые из этих многословных объектов. Я хочу использовать свой SampleDataHelperкласс (определенный в data src/test) в тестах, которые находятся в моем consumer src/testдереве. К сожалению, несмотря на то, что он dataявляется зависимостью consumer, consumerне может видеть классы, которые существуют в data src/test.
Чтобы бороться с этим, я подумал, что могу создать еще один модуль ( data-test) и перейти SampleDataHelperк нему под src/main. Затем я бы включил data-testв качестве тестовой области зависимость data. К сожалению, здесь возникает циклическая зависимость: dataиспользует data-test, но data-testтакже требует data.
Единственное решение , которое я придумал это место SampleDataHelperпод data src/mainпод testпакетом и надеждой , что никакой реальный код приложения никогда не называет его.
Как я могу поделиться своим SampleDataHelperклассом между модулями, не помещая его под src/main?
data), прежде чем я смогу даже скомпилировать свой второй модуль ( consumer).
mvn package, но он должен работать нормально в одноэтапной сборке, когда вы используете mvn installили mvn deploy. Просто небольшое примечание. В одном из наших крупных проектов у нас есть оболочка над junit, TestBaseи она находится в src/mainкоторой я тоже не считаю хорошей идеей.