Maven的依赖管理的体系设计

2021-11-10 15:59:20 浏览数 (1)

在Maven的生命周期中,存在编译、测试、运行等过程,那么有些依赖只用于测试,比如junit;有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用的是JDBC接口),而是在运行时用到的;还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,我们只需要的是编译期提供而已。

代码语言:javascript复制
  <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <type>jar</type>http://lx.gongxuanwang.com/sszt/7.htm
        <scope>test</scope>
        <optional>false</optional>
        <exclusions>
            <exclusion></exclusion>
        </exclusions>
    </dependency>
</dependencies>

上面湖北遴选的示例我们定义了junit的依赖,而且junit只在测试阶段生效。具体配置参数如下:

  • type:依赖类型,对应构件中定义的 packaging,可不声明,默认为 jar;
  • scope:依赖范围,大致有compile、provided、runtime、test、system等几个;
  • ovided:已提供依赖范围。编译和测试有效,运行无效。如 servlet-api ,在项目运行时,tomcat 等容器已经提供,无需 Maven 重复引入;
  • runtime:运行时依赖范围。湖北遴选测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;
  • system:系统依赖范围。和 provided 依赖范围一致,也是编译和测试有效,需要通过  显示指定,且可以引用环境变量;

0 人点赞