Maven:我如何在测试阶段包含依赖项并在集成测试阶段排除它?
我正在使用Maven 3.0.3。Maven:我如何在测试阶段包含依赖项并在集成测试阶段排除它?,maven,dependencies,maven-2,Maven,Dependencies,Maven 2,我正在使用Maven 3.0.3。 是否可以只包含测试阶段的依赖项,然后只包含集成阶段的另一个依赖项?当这两个依赖项包含在一起时 <dependency> <groupId>com.google.gwt</groupId> <artifactId>gwt-dev</artifactId> <version>${gwtVersion}</version> <scope&
是否可以只包含测试阶段的依赖项,然后只包含集成阶段的另一个依赖项?当这两个依赖项包含在一起时
<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>
com.google.gwt
gwt开发
${gwtVersion}
试验
...
org.seleniumhq.selenium
硒爪哇
2.13.0
试验
运行Selenium集成测试时,我得到一个
java.lang.NoSuchMethodError:org.apache.http.conn.scheme.scheme.
错误。排除GWT依赖项后,将运行Selenium测试。我仍然需要测试阶段的GWT依赖项,tho.Maven概要文件中的不同依赖项集是实现这一点的唯一方法,因为“测试”范围包含了“测试”和“集成测试”阶段的使用。配置文件允许您根据-P
命令行选项的参数添加依赖项。关于给出的答案,我最喜欢的是简单地将“classpathDependencyExcludes”添加到故障保护插件执行中
<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>
org.apache.maven.plugins
maven故障保护插件
2.10
集成测试
验证
**/整合/**
${tomcat.servlet.port}
${project.artifactId}
gwt:gwtdev
这确保了在运行集成测试阶段时不会出现有问题的依赖项(在本例中为gwt dev)。我建议使用测试用例创建单独的项目创建两个不同的概要文件如何?您是否尝试过运行“mvn dependency:tree”,并查看在这两种情况下您的依赖项会发生什么情况?可能由于某种原因,您获得了错误的Apache HttpClient版本?能否提供一个示例,说明如何在测试阶段激活一个概要文件,以及如何在集成测试阶段激活另一个概要文件?另外,无论如何,我都不需要在命令行上显式地指定概要文件(例如,-P testProfile、integrationTestProfile)?第一个问题更重要——第二个问题只是一个“很好的选择”。使用
mvn帮助:有效的pom
来查看各种-P
选项可以得到什么。要自动启用/禁用配置文件,我建议使用
元素,该元素在文件存在或丢失时激活配置文件。见文件。这允许您在构建服务器上运行ITs,并在开发PC上跳过它们,除非您特别请求它们。另外,编写几个批处理脚本也会有所帮助。