Sharing src/test classes between modules in a multi-module maven project Sharing src/test classes between modules in a multi-module maven project java java

Sharing src/test classes between modules in a multi-module maven project


Your Consumer project depends upon your Data project, therefore we are happy that Data must be built prior to Consumer. As a result, using the techniques suggested in the comments, I would ensure your Data project contains all the test code that you wish to share and configure the POM to produce a test JAR:

<plugin>  <groupId>org.apache.maven.plugins</groupId>  <artifactId>maven-jar-plugin</artifactId>  <version>2.2</version>  <executions>    <execution>      <goals>        <goal>test-jar</goal>      </goals>    </execution>  </executions></plugin>

Your Consumer project would then depend upon both the normal Data JAR artifact, plus the additional test-jar artifact, with test scope of course:

<dependency>  <groupId>com.foo</groupId>  <artifactId>data</artifactId>  <version>1.0</version>  <type>test-jar</type>  <scope>test</scope></dependency>

I've used this approach on many occasions and it works well.


So the problem is that (some) tests in the data module depend on the SampleDataHelper class? You can move the SampleDataHelper class to src/main of the data-test module, if you at the same time move the tests (that depend on the specific class) to the src/test of the data-test module. Consequently, there would be no more circular dependencies.