У мене є багатомодульний проект Maven. Для цього прикладу розглянемо два модулі:
data
consumer
Модуль 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
. Просто швидка примітка. В одному з наших великих проектів у нас є обгортка над юнітом, TestBase
і він розташований, в src/main
якому я також не вважаю гарною ідеєю.