【问题标题】:How to limit dependency scope in Maven如何在 Maven 中限制依赖范围
【发布时间】:2017-04-18 11:01:33
【问题描述】:

我有一个使用 Mockito 框架进行测试的 Maven 项目。我在 pom.xml 中包含了 mockito-core 依赖项。

<dependency>
  <groupId>org.mockito</groupId>
  <artifactId>mockito-core</artifactId>
  <version>2.7.22</version>
</dependency>

mockito-core jar 是否会添加到生产存储库中,即使它仅用于测试?如何避免在生产环境中下载这个 jar(仅限于开发环境)?

【问题讨论】:

    标签: maven mockito


    【解决方案1】:

    最简单的解决方案是像以前一样添加依赖项:

    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>2.7.22</version>
    </dependency>
    

    但是您错过了为依赖项添加适当范围的原因,因为它只是测试所必需的,因此应该如下所示:

    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>2.7.22</version>
      <scope>test</scope>
    </dependency>
    

    【讨论】:

    • 我试过了,但是当我在 Eclipse 中运行时,它会下载这个 jar,尽管我有测试范围。那么,范围是否仅在服务器(Tomcat、Weblogic 等)中有效?
    • 肯定 Elcipse 会下载,因为您可以在 Eclipse 中运行测试,那么问题出在哪里?它将被打包成一个war文件...
    【解决方案2】:

    依赖范围用于限制依赖的传递性。为此目的使用 标签。

    有 6 个作用域可用:compile(默认作用域)、provided、runtime、test、system 和 import

    测试范围告诉 Maven,该依赖项仅在测试编译和执行阶段需要,而不是应用程序本身的使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 2014-02-24
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-26
      相关资源
      最近更新 更多