When you want to create a jar containing test-classes, you would probably want to reuse those classes. There are two ways to solve this:
You can produce a jar which will include your test classes and resources.
<project> ... <build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.5</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin> ... </plugins> </build> ... </project>
To reuse this artifact in an other project, you must declare this dependency with type test-jar :
<project> ... <dependencies> <dependency> <groupId>groupId</groupId> <artifactId>artifactId</artifactId> <type>test-jar</type> <version>version</version> <scope>test</scope> </dependency> </dependencies> ... </project>
Note: The downside of this solution is that you don't get the transitive test-scoped dependencies automatically. Maven only resolves the compile-time dependencies, so you'll have to add all the other required test-scoped dependencies by hand.
In order to let Maven resolve all test-scoped transitive dependencies you should create a separate project.
<project> <groupId>groupId</groupId> <artifactId>artifactId-tests</artifactId> <version>version</version> ... </project>
Now you have your reusable test-classes and you can refer to it as you're used to:
<project> ... <dependencies> <dependency> <groupId>groupId</groupId> <artifactId>artifactId-tests</artifactId> <version>version</version> <scope>test</scope> </dependency> </dependencies> ... </project>