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