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>