Tôi có một dự án Maven nhiều mô-đun. Vì lợi ích của ví dụ này, hãy xem xét hai mô-đun:
dataconsumer
Mô-đun consumercó mô-đun datanhư một phụ thuộc.
Mô-đun datakhai báo một loạt các lớp lõi. Có những bài kiểm tra src/testsử dụng chúng. Các bài kiểm tra này yêu cầu một số tạo đối tượng dài dòng, vì vậy tôi có một lớp với một số phương thức tiện ích trong đó để tạo các đối tượng này. Lớp tiện ích ( SampleDataHelper) này nằm trong src/testhệ thống phân cấp.
Tôi cũng có một số bài kiểm tra trong consumermô-đun cần tạo một số đối tượng dài dòng này. Tôi muốn sử dụng SampleDataHelperlớp của mình (được định nghĩa trong data src/test) trong các bài kiểm tra nằm trong consumer src/testcây của tôi . Thật không may, mặc dù datalà một phụ thuộc của consumer, consumerkhông thể thấy các lớp tồn tại bên dưới data src/test.
Để chống lại điều này, tôi nghĩ mình có thể tạo một mô-đun khác ( data-test) và chuyển SampleDataHelperđến nó bên dưới src/main. Sau đó, tôi sẽ bao gồm data-testnhư một phụ thuộc phạm vi thử nghiệm của data. Thật không may, điều này giới thiệu một phụ thuộc vòng tròn: datasử dụng data-test, nhưng data-testcũng yêu cầu data.
Giải pháp duy nhất tôi đã đi lên với là nơi SampleDataHelperdưới data src/maindưới một testgói và hy vọng rằng không có mã số ứng dụng thực tế bao giờ gọi nó.
Làm cách nào tôi có thể chia sẻ SampleDataHelperlớp học của mình giữa các học phần mà không cần đặt nó bên dưới src/main?
data) trước khi tôi thậm chí có thể biên dịch mô-đun thứ hai của mình ( consumer).
mvn package, nhưng nó sẽ hoạt động tốt trong xây dựng một bước duy nhất khi bạn sử dụng mvn installhoặc mvn deploy. Chỉ cần một ghi chú nhanh chóng. Trong một trong những dự án lớn của chúng tôi, chúng tôi có một phần mềm bao bọc bên ngoài TestBasevà nó nằm trong src/mainđó tôi cũng không cho là một ý tưởng hay.