Ho un progetto Maven multi-modulo. Per il bene di questo esempio, considera due moduli:
dataconsumer
Il modulo consumerha il modulo datacome dipendenza.
Il modulo datadichiara un mucchio di classi principali. Ci sono test sotto src/testche li usano. Questi test richiedono una creazione di oggetti prolissa, quindi ho una classe con alcuni metodi di utilità per creare questi oggetti. Questa classe di utilità ( SampleDataHelper) è nella src/testgerarchia.
Ho anche alcuni test nel consumermodulo che devono creare alcuni di questi oggetti prolissi. Voglio usare la mia SampleDataHelperclasse (definita in data src/test) nei test che risiedono nel mio consumer src/testalbero. Purtroppo, anche se dataè una dipendenza diconsumer , consumernon è possibile vedere le classi che esistono sotto data src/test.
Per combattere questo, ho pensato di creare un altro module ( data-test) e spostarmi SampleDataHelpersu di esso in src/main. Quindi includerei data-testcome dipendenza dell'ambito del test di data. Sfortunatamente, questo introduce una dipendenza circolare: datausa data-test, ma data-testrichiede anche data.
L'unica soluzione che ho trovato è posizionare SampleDataHelper sotto data src/mainsotto un testpacchetto e la speranza che nessun codice reale applicazione mai lo chiama.
Come posso condividere la mia SampleDataHelperclasse tra i moduli senza inserirla src/main?
data) prima ancora di poter compilare il mio secondo modulo ( consumer).
mvn package, ma dovrebbe funzionare bene in un singolo passaggio quando usi mvn installo mvn deploy. Solo una breve nota. In uno dei nostri grandi progetti abbiamo un wrapper su junit TestBasee si trova in src/maincui non considero nemmeno una buona idea.