Author: rfscholte Date: Wed Aug 17 18:39:16 2011 New Revision: 1158862 URL: http://svn.apache.org/viewvc?rev=1158862&view=rev Log: Documenting both ways of creating jars with test-classes
Modified: maven/plugins/trunk/maven-jar-plugin/src/site/apt/usage.apt.vm Modified: maven/plugins/trunk/maven-jar-plugin/src/site/apt/usage.apt.vm URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-jar-plugin/src/site/apt/usage.apt.vm?rev=1158862&r1=1158861&r2=1158862&view=diff ============================================================================== --- maven/plugins/trunk/maven-jar-plugin/src/site/apt/usage.apt.vm (original) +++ maven/plugins/trunk/maven-jar-plugin/src/site/apt/usage.apt.vm Wed Aug 17 18:39:16 2011 @@ -131,6 +131,17 @@ mvn package +-----------------+ * How to create a jar containing test classes + + 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: + + * Create an attached jar with the test-classes from the current project and loose its transitive <<<test>>>-scoped dependencies. + + * Create a separate project with the test-classes. + + [] + +** The easy way You can produce a jar which will include your test classes and resources. @@ -177,7 +188,44 @@ mvn package </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. +** The preferred way + 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> ++-----------------+ + + * Move the sources files from <<<src/test/java>>> you want to share from the original project to the <<<src/main/java>>> of this project. + The same type of movement counts for the resources as well of course. + + * Move the required <<<test>>>-scoped dependencies and from the original project to this project and remove the scope (i.e. changing it to the <<<compile>>>-scope). + And yes, that means that the junit dependency (or any other testing framework dependency) gets the default scope too. + You'll probably need to add some project specific dependencies as well to let it all compile again. + + 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> ++-----------------+ - For full documentation, click {{{plugin-info.html}here}}. + For full documentation, click {{{./plugin-info.html}here}}.