Maven学习----Dependency scope

首先官网APIhtml

2.09版本以后,有6中scope。java

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

  • 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.
相关文章
相关标签/搜索