Maven Dependency Scope

导语:

Dependency scope 是用来限制Dependency的作用范围的, 影响maven项目在各个生命周期时导入的package的状态。自从2.0.x后,新增了1种,现在有了6种scope

常用scope 介绍

  • compile 默认的scope

表示 dependency 可以在生命周期中使用。而且这些dependencies 会传递到依赖的项目中。

  • provided

跟compile相似,但是表明了dependency 由JDK或者容器提供。
例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。
使用这个时,不会将包打入本项目中,只是依赖过来。(when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath, and is not transitive.)

  • runtime

表示dependency不作用在编译时,但会作用在运行和测试时

  • test

表示dependency作用在测试时,不作用在运行时。

  • system

跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。 例如:

<dependencies>
  <dependency>
   <groupId>javax.sql</groupId>
   <artifactId>jdbc-stdext</artifactId>
   <version>2.0</version>
   <scope>system</scope>
   <systemPath>${java.home}/lib/rt.jar</systemPath>
  </dependency>
</dependencies>
  • import (Maven 2.0.9 之后新增)

它只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置,例如 (B项目导入A项目中的包配置):

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>maven</groupId>
  <artifactId>B</artifactId>
  <packaging>pom</packaging>
  <name>B</name>
  <version>1.0</version>
  <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>maven</groupId>
          <artifactId>A</artifactId>
          <version>1.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
        <dependency>
          <groupId>test</groupId>
          <artifactId>d</artifactId>
          <version>1.0</version>
        </dependency>
      </dependencies>
  </dependencyManagement>
</project>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 前言什么是 POMQuick Overview POM 常用元素 pom.xml 完整注释 参考 0 前言 什么是...
    阿父阅读 12,655评论 1 36
  • 我jdk版本是1.7.0_95,在网上查了一下1.7属于java7maven3.3+版本都支持java7,所以我使...
    liangxifeng833阅读 1,293评论 0 2
  • 1.编写POM Maven项目的核心文件是pom.xml,POM(Project Objcet Model)项目对...
    zlcook阅读 5,936评论 7 26
  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 1,721评论 0 3