In a multi modules project where you have write API or common code for unit tests in one project and want to reuse these in the tests for another project. Maven will crash during the compile phase if you do not make the following.
Maven rules of the game:
- The main code in src/main/java is visible across modules if you did specify project
dependencies in pom.xml.
- Test code reside in src/test/java and is not shared across modules, moreover
- Test code can use any code from src/main/java but not the other way around, which
make sense as we want to clearly separate test code (junit testcases) from code shipped.
The solution is to create additional test jar for each module, this is done by putting in the
parent pom (lets call it parent-pom.xml)
inside the <build></build> tags the following:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>