Maven学习----Dependency scope

首先官网API

2.09版本之后,有6中scope。

  Dependency scope 用来限制依赖的作用范围,同时也作用于各种编译路径类路径,下面详细说明这六种路径:

  • compile
    这是默认范围,Complie依赖对于整个工程可用,这些依赖也可以传递到项目中。
  • provided
    非常类似于Compile,表示SDK或者容器在运行时提供。例如,用javaEE来编译一个web spplication时,由于容器已经提供这些类,你只需将Servlet API和相关的java EE APIs的范围scope设置为provided即可。这个范围用于编译和测试路径,并且是不可传递的。例如:
<!-- Servlet -->  
        <dependency>  
            <groupId>javax.servlet</groupId>  
            <artifactId>servlet-api</artifactId>  
            <version>2.5</version>  
            <scope>provided</scope>  
        </dependency>  
        <dependency>  
            <groupId>javax.servlet.jsp</groupId>  
            <artifactId>jsp-api</artifactId>  
            <version>2.1</version>  
            <scope>provided</scope>  
        </dependency>  
  • runtime
    这个范围表明依赖不做用于编译时,但是作用于运行时。它是运行时和测试时路径,不是编译时路径。
  • test
    这个范围表示这个依赖不是程序正常使用的依赖,仅仅用于测试时,这个范围不可传递。
  • system
    这个范围类似与provided,但是需要在外部指定路径,并且这个依赖不会在本地仓库中查找。
<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(only available in Maven 2.0.9 or later)
    这个范围仅仅用于<dependencyManagement>节点中,它表示依赖将被<dependencyManagement>里面的依赖代替,因为这些依赖被代替了,有Import范围的依赖并不限制依赖的传递性。原文为: It indicates the dependency to be replaced with the effective list of dependencies in the specified POM's <dependencyManagement> section. Since they are replaced, dependencies with a scope of import do not actually participate in limiting the transitivity of a dependency.
posted @ 2016-01-09 11:04  凝荷  阅读(403)  评论(0编辑  收藏  举报