Ich habe ein Maven-Projekt mit mehreren Modulen. Betrachten Sie für dieses Beispiel zwei Module:
dataconsumer
Modul consumerhat Modul dataals Abhängigkeit.
Das Modul datadeklariert eine Reihe von Kernklassen. Es gibt Tests src/test, bei denen sie verwendet werden. Diese Tests erfordern eine langwierige Objekterstellung, daher habe ich eine Klasse mit einigen Dienstprogrammmethoden zum Erstellen dieser Objekte. Diese Utility-Klasse ( SampleDataHelper) befindet sich in der src/testHierarchie.
Ich habe auch einige Tests im consumerModul, die einige dieser langwierigen Objekte erstellen müssen. Ich möchte meine SampleDataHelperKlasse (definiert in data src/test) in Tests verwenden, die sich in meinem consumer src/testBaum befinden. Leider, obwohl dataeine Abhängigkeit von consumer, consumerkann nicht die Klassen sehen , die unter existieren data src/test.
Um dies zu bekämpfen, dachte ich , ich könnte schaffen ein anderes Modul ( data-test), und zu bewegen , SampleDataHelperum es unter src/main. Dann würde ich data-testals Testumfang Abhängigkeit von einschließen data. Leider führt dies zu einer zirkulären Abhängigkeit: dataverwendet data-test, data-testerfordert aber auch data.
Die einzige Lösung, die ich mir ausgedacht habe, besteht darin, sie SampleDataHelperunter data src/mainein testPaket zu stellen und zu hoffen, dass kein wirklicher Anwendungscode sie jemals aufruft.
Wie kann ich meine SampleDataHelperKlasse zwischen Modulen teilen, ohne sie zu unterstellen src/main?
data), bevor ich überhaupt mein zweites Modul kompilieren kann ( consumer).
mvn package, aber es sollte in einem einzigen Schritt Build gut funktionieren, wenn Sie mvn installoder verwenden mvn deploy. Nur eine schnelle Anmerkung. In einem unserer großen Projekte haben wir einen Wrapper über Junits TestBaseund dieser befindet sich, in src/maindem ich es auch nicht für eine gute Idee halte.