Eu tenho um projeto Maven com vários módulos. Para fins deste exemplo, considere dois módulos:
data
consumer
O módulo consumer
possui o módulo data
como uma dependência.
O módulo data
declara várias classes principais. Existem testes para src/test
usá-los. Esses testes exigem alguma criação de objetos longos, então eu tenho uma classe com alguns métodos utilitários para criar esses objetos. Esta classe de utilitário ( SampleDataHelper
) está na src/test
hierarquia.
Também tenho alguns testes no consumer
módulo que precisam criar alguns desses objetos longos. Quero usar minha SampleDataHelper
classe (definida em data src/test
) em testes que residem na minha consumer src/test
árvore. Infelizmente, mesmo sendo data
uma dependência consumer
, consumer
não consigo ver as classes que existem abaixo data src/test
.
Para combater isso, pensei em criar outro módulo ( data-test
) e passar SampleDataHelper
para ele abaixo src/main
. Então eu incluiria data-test
como dependência de escopo de testedata
. Infelizmente, isso introduz uma dependência circular: data
usa data-test
, mas data-test
também exige data
.
A única solução que eu vim acima com é colocar SampleDataHelper
sob data src/main
sob um test
pacote e esperança de que nenhum código de aplicação real nunca chama.
Como posso compartilhar minha SampleDataHelper
classe entre módulos sem colocá-la em baixo src/main
?
data
) antes que eu possa compilar meu segundo módulo ( consumer
).
mvn package
, mas deve funcionar bem em uma única etapa de compilação quando você usa mvn install
ou mvn deploy
. Apenas uma nota rápida. Em um de nossos grandes projetos, temos um invólucro sobre o junit TestBase
e ele está localizado no src/main
qual também não considero uma boa idéia.