Ich habe ein Maven-Projekt mit mehreren Modulen. Betrachten Sie für dieses Beispiel zwei Module:
data
consumer
Modul consumer
hat Modul data
als Abhängigkeit.
Das Modul data
deklariert 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/test
Hierarchie.
Ich habe auch einige Tests im consumer
Modul, die einige dieser langwierigen Objekte erstellen müssen. Ich möchte meine SampleDataHelper
Klasse (definiert in data src/test
) in Tests verwenden, die sich in meinem consumer src/test
Baum befinden. Leider, obwohl data
eine Abhängigkeit von consumer
, consumer
kann 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 , SampleDataHelper
um es unter src/main
. Dann würde ich data-test
als Testumfang Abhängigkeit von einschließen data
. Leider führt dies zu einer zirkulären Abhängigkeit: data
verwendet data-test
, data-test
erfordert aber auch data
.
Die einzige Lösung, die ich mir ausgedacht habe, besteht darin, sie SampleDataHelper
unter data src/main
ein test
Paket zu stellen und zu hoffen, dass kein wirklicher Anwendungscode sie jemals aufruft.
Wie kann ich meine SampleDataHelper
Klasse 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 install
oder verwenden mvn deploy
. Nur eine schnelle Anmerkung. In einem unserer großen Projekte haben wir einen Wrapper über Junits TestBase
und dieser befindet sich, in src/main
dem ich es auch nicht für eine gute Idee halte.