【问题标题】:maven scope test with seleniummaven 范围测试与硒
【发布时间】:2019-12-03 21:13:12
【问题描述】:

当我们使用范围作为 selenium 项目的 pom.xml 文件中的某些依赖项的测试时有什么区别。 示例:之间的区别

<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>3.141.59</version>
 <scope>test</scope>
</dependency>

<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>3.141.59</version>
</dependency>

【问题讨论】:

    标签: java maven selenium


    【解决方案1】:

    默认范围是compile

    此范围在编译时将依赖项添加到项目中,并且还会在您创建具有依赖项(或类似)的 JAR 时导出

    test 范围仅为测试源添加依赖项(例如,单元测试/在大多数情况下位于src/test)。它只能从测试源访问,并且不会被导出(测试 JAR 除外)

    如果项目的测试代码中只需要 selenium,我建议使用test 范围。

    【讨论】:

    • 你的意思是这个依赖不能被src/main/java或项目的其他文件夹中的类使用吗??
    • 是的,仅限src/test/java
    • 而且你项目的依赖也不能使用它。
    【解决方案2】:

    Maven 中的依赖范围

    Dependency scope 用于限制依赖项的传递性,这也会影响用于各种构建相关任务的类路径。

    目前支持以下6个依赖范围:

    • compilecompile 范围是默认范围,如果未指定则使用。编译依赖项在项目的所有类路径中都可用。这些依赖项被传播到依赖项目。

      • 示例:

        <scope>compile</scope>
        
    • providedprovided 作用域几乎与 compile 相似,但表示您希望 JDK 或容器在运行时提供依赖项。

      • 示例:

        <scope>provided</scope>
        
    • runtimeruntime 作用域表示在编译时不需要依赖,仅在执行时需要。它在运行时和测试类路径中,但不在编译类路径中。

      • 示例:

        <scope>runtime</scope>
        
    • testtest范围表示该依赖不是应用正常使用所必需的,仅在测试编译和执行阶段可用。这个范围是不可传递的。

      • 示例:

        <scope>test</scope>
        
    • systemsystem 作用域类似于提供,只是您必须提供明确包含它的 JAR。工件始终可用,不会在存储库中查找。

      • 示例:

        <scope>system</scope>
        
    • importimport 范围仅在 &lt;dependencyManagement&gt; 部分中类型为 pom 的依赖项上受支持。它指示要替换为指定 POM 部分中的有效依赖项列表的依赖项。

      • 示例:

        <scope>import</scope>
        

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 2019-11-02
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 2015-09-09
      • 2019-11-25
      相关资源
      最近更新 更多