【问题标题】:Exclude maven dependency for tests排除测试的 Maven 依赖项
【发布时间】:2012-08-16 16:58:39
【问题描述】:

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

【问题讨论】:

  • 这听起来不对?您需要它来编译和运行时而不是测试?你在测试什么?
  • @khmarbaise 我知道这听起来可能很奇怪。问题是我需要使用一个 logback 实现版本进行编译和运行时,但另一个用于测试(它是来自带有 test scope 的 Embedded-glassfish-all 的传递依赖)。
  • 如果你嵌入了 glassfish,你的测试就不会测试这样的东西。这听起来像是集成测试。
  • 是的,我们正在进行一些集成测试。但这并不重要。我正在尝试找出是否有办法在某个阶段排除依赖项。
  • 每个 logback 实现一个配置文件怎么样?

标签: maven maven-3


【解决方案1】:

感谢maven surefire plugin,您可以在测试阶段(重新)配置类路径。您可以添加类路径元素或排除依赖项。

<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>

@jFrenetic 的As noted 你可以用maven-failsafe-plugin 做同样的事情。

【讨论】:

  • 谢谢!以后再试试。
  • 这实际上是一个非常好的灵魂!考虑到单元测试和集成测试由不同的插件(surefirefailsafe)执行,使用插件特定的配置管理类路径非常方便。
  • 请注意。这与 IntellJ Idea Test Runner 不兼容。 maven-surefire-plugin Exclude classpathDependencyExclude 配置似乎被忽略了。这意味着您在 IntellJ Idea 上的唯一解决方法是使用终端运行您的测试或 Maven 项目工具窗口。 See open ticket 。也就是说,这适用于 Eclipse。
  • 这现在在 2019.3 Intellij 中工作。参考youtrack.jetbrains.com/issue/IDEA-122783
  • 这在 Eclipse Version: 2019-12 (4.14.0) 中对我不起作用 - 从 Maven 命令行运行测试时它确实起作用。
猜你喜欢
  • 2012-02-25
  • 2012-05-27
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2012-03-02
  • 2019-11-25
相关资源
最近更新 更多