Tengo un proyecto Maven de varios módulos. Por el bien de este ejemplo, considere dos módulos:
dataconsumer
El módulo consumertiene un módulo datacomo dependencia.
El módulo datadeclara un montón de clases principales. Hay pruebas debajo src/testque los usan. Estas pruebas requieren una creación de objetos prolija, así que tengo una clase con algunos métodos de utilidad para crear estos objetos. Esta clase de utilidad ( SampleDataHelper) está en la src/testjerarquía.
También tengo algunas pruebas en el consumermódulo que necesitan crear algunos de estos objetos prolijos. Quiero usar mi SampleDataHelperclase (definida en data src/test) en las pruebas que residen en mi consumer src/testárbol. Desafortunadamente, aunque dataes una dependencia de consumer, consumerno se pueden ver las clases que existen debajo data src/test.
Para combatir esto, pensé que podría crear otro módulo ( data-test) y pasar SampleDataHelpera él debajo src/main. Luego incluiría data-testcomo alcance de prueba la dependencia de data. Desafortunadamente, esto introduce una dependencia circular: datausa data-test, pero data-testtambién requiere data.
La única solución que he llegado con es colocar SampleDataHelperbajo data src/mainbajo un testpaquete y la esperanza de que ningún código de aplicación real nunca lo llama.
¿Cómo puedo compartir mi SampleDataHelperclase entre módulos sin someterla src/main?
data) antes de que pueda incluso compilar mi segundo módulo ( consumer).
mvn package, pero debería funcionar bien en una compilación de un solo paso cuando usa mvn installo mvn deploy. Solo una nota rapida. En uno de nuestros grandes proyectos tenemos un wrapper sobre junit's TestBasey está ubicado en el src/mainque tampoco considero buena idea.