Tengo un proyecto Maven de varios módulos. Por el bien de este ejemplo, considere dos módulos:
data
consumer
El módulo consumer
tiene un módulo data
como dependencia.
El módulo data
declara un montón de clases principales. Hay pruebas debajo src/test
que 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/test
jerarquía.
También tengo algunas pruebas en el consumer
módulo que necesitan crear algunos de estos objetos prolijos. Quiero usar mi SampleDataHelper
clase (definida en data src/test
) en las pruebas que residen en mi consumer src/test
árbol. Desafortunadamente, aunque data
es una dependencia de consumer
, consumer
no 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 SampleDataHelper
a él debajo src/main
. Luego incluiría data-test
como alcance de prueba la dependencia de data
. Desafortunadamente, esto introduce una dependencia circular: data
usa data-test
, pero data-test
también requiere data
.
La única solución que he llegado con es colocar SampleDataHelper
bajo data src/main
bajo un test
paquete y la esperanza de que ningún código de aplicación real nunca lo llama.
¿Cómo puedo compartir mi SampleDataHelper
clase 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 install
o mvn deploy
. Solo una nota rapida. En uno de nuestros grandes proyectos tenemos un wrapper sobre junit's TestBase
y está ubicado en el src/main
que tampoco considero buena idea.