Search code examples
mavendependenciesmaven-2

Maven: How do I include a dependency in test phase and exclude it in integration-test phase?


I'm using Maven 3.0.3.
Is it possible to include a dependency for my test phase only, and then another dependency for my integration-phase only? When these two dependencies are included together

<dependency> 
    <groupId>com.google.gwt</groupId> 
    <artifactId>gwt-dev</artifactId> 
    <version>${gwtVersion}</version> 
    <scope>test</scope> 
</dependency> 
... 
<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.13.0</version> 
    <scope>test</scope> 
</dependency> 

I get a java.lang.NoSuchMethodError: org.apache.http.conn.scheme.Scheme.<init> error when running my Selenium integration tests. When the GWT dependency is excluded, the Selenium tests run. I still need the GWT dependency for the test phase, tho.


Solution

  • With respect to the answers given, the one I liked best was simply adding a "classpathDependencyExcludes" to my failsafe-plugin execution ...

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                        <configuration>
                            <includes>
                                <include>**/integration/**</include>
                            </includes>
                            <systemPropertyVariables>
                                <tomcat.port>${tomcat.servlet.port}</tomcat.port>
                                <project.artifactId>${project.artifactId}</project.artifactId>
                            </systemPropertyVariables>
                            <classpathDependencyExcludes>
                                <classpathDependencyExcludes>com.google.gwt:gwt-dev</classpathDependencyExcludes>
                            </classpathDependencyExcludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    

    That ensured that the problematic dependency (in this case gwt-dev), would not appear when running the integration-test phase.