Mam wielomodułowy projekt Mavena. Na potrzeby tego przykładu rozważ dwa moduły:
dataconsumer
Moduł consumerma moduł datajako zależność.
Moduł datadeklaruje kilka podstawowych klas. Istnieją testy, src/testktóre z nich korzystają. Te testy wymagają długiego tworzenia obiektów, więc mam klasę z kilkoma metodami użytkowymi do tworzenia tych obiektów. Ta klasa narzędziowa ( SampleDataHelper) znajduje się w src/testhierarchii.
Mam też kilka testów w consumermodule, które wymagają stworzenia niektórych z tych długich obiektów. Chcę używać mojej SampleDataHelperklasy (zdefiniowanej w data src/test) w testach znajdujących się w moim consumer src/testdrzewie. Niestety, mimo że datajest to zależność consumer, consumernie można zobaczyć klas, które istnieją w ramach data src/test.
Aby temu zaradzić, pomyślałem, że mógłbym utworzyć kolejny moduł ( data-test) i przejść SampleDataHelperdo niego pod src/main. Następnie dodałbym data-testjako zależność zakresu testowegodata . Niestety, wprowadza to zależność cykliczną: dataużywa data-test, ale data-testtakże wymaga data.
Jedynym rozwiązaniem mam wymyślić ma miejsce SampleDataHelperpod data src/mainramach testpakietu i nadziei, że żaden prawdziwy kod aplikacji kiedykolwiek nazywa go.
Jak mogę udostępniać moje SampleDataHelperzajęcia między modułami bez umieszczania ich poniżej src/main?
data), zanim będę mógł skompilować drugi moduł ( consumer).
mvn package, ale powinna działać dobrze w jednym etapie kompilacji podczas korzystania mvn installlub mvn deploy. Tylko krótka notatka. W jednym z naszych dużych projektów mamy opakowanie na junit TestBasei jest ono zlokalizowane, w src/mainktórym również nie uważam za dobry pomysł.