排除测试的maven依赖项

jFr*_*tic 35 maven-3 maven

我有一个编译和运行时所需的依赖项,但我想在运行测试时将其排除.这可能吗?也许,通过设置个人资料?但是,如何仅在test生命周期阶段停用它?

gon*_*ard 45

您可以在测试阶段(重新)配置类路径,这要归功于maven surefire插件.您可以添加类路径元素或排除依赖项.

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.2</version>
        <configuration>
          <additionalClasspathElements>
            <additionalClasspathElement>path/to/additional/resources</additionalClasspathElement>
            <additionalClasspathElement>path/to/additional/jar</additionalClasspathElement>
          </additionalClasspathElements>
          <classpathDependencyExcludes>
            <classpathDependencyExclude>org.apache.commons:commons-email</classpathDependencyExclude>
          </classpathDependencyExcludes>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>
Run Code Online (Sandbox Code Playgroud)

正如 @jFrenetic 所指出的,你可以使用maven-failsafe-plugin做同样的事情.

  • 这实际上是一个非常好的灵魂!考虑到单元和集成测试由不同的插件(`surefire`和`failsafe`)执行,使用特定于插件的配置管理类路径非常方便. (3认同)
  • 当心。这在IntellJ Idea Test Runner中不能很好地发挥作用。`maven-surefire-plugin` Exclude`classpathDependencyExclude`配置似乎被忽略了。意味着在IntellJ Idea上唯一的解决方法是使用终端运行测试或Maven Project工具窗口。[请参阅公开票](https://youtrack.jetbrains.com/issue/IDEA-122783)。也就是说,这适用于Eclipse。 (3认同)