zoukankan      html  css  js  c++  java
  • Maven Dependency Scope用法

    原帖地址:http://uule.iteye.com/blog/2087485

     官方API描述

    Dependency scope 是用来限制Dependency的作用范围的, 影响maven项目在各个生命周期时导入的package的状态。

    自从2.0.9后,新增了1种,现在有了6种scope:

    • compile
      默认的scope,表示 dependency 都可以在生命周期中使用。而且,这些dependencies 会传递到依赖的项目中。
    • provided
      跟compile相似,但是表明了dependency 由JDK或者容器提供,例如Servlet AP和一些Java EE APIs。这个scope 只能作用在编译和测试时,同时没有传递性。
    • 使用这个时,不会将包打入本项目中,只是依赖过来。   
    • 使用默认或其他时,会将依赖的项目打成jar包,放入本项目的Lib里
    • 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.
    • Xml代码  收藏代码
      1. <!-- Servlet -->  
      2.         <dependency>  
      3.             <groupId>javax.servlet</groupId>  
      4.             <artifactId>servlet-api</artifactId>  
      5.             <version>2.5</version>  
      6.             <scope>provided</scope>  
      7.         </dependency>  
      8.         <dependency>  
      9.             <groupId>javax.servlet.jsp</groupId>  
      10.             <artifactId>jsp-api</artifactId>  
      11.             <version>2.1</version>  
      12.             <scope>provided</scope>  
      13.         </dependency>  
       
    • runtime
      表示dependency不作用在编译时,但会作用在运行和测试时
    • test
      表示dependency作用在测试时,不作用在运行时。
    • system
      跟provided 相似,但是在系统中要以外部JAR包的形式提供,maven不会在repository查找它。 例如:

    <project>
    ...
    <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>
    ...
    </project>

    • import (Maven 2.0.9 之后新增)
      它只使用在<dependencyManagement>中,表示从其它的pom中导入dependency的配置,例如:    This scope is only used on a dependency of type pom in the <dependencyManagement> section. It indicates that the specified POM should be replaced with the dependencies in that 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.

    <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>

    B项目导入A项目中的包配置

  • 相关阅读:
    BT656跟BT1120和BT709有什么区别 分类: 生活百科 HI3531 2013-11-26 09:03 1320人阅读 评论(0) 收藏
    plx9030触发pci中断 分类: 浅谈PCI 2013-11-15 17:52 634人阅读 评论(2) 收藏
    如何把任意文件隐藏在一张图片里? 分类: DirectX 2013-11-15 16:05 524人阅读 评论(0) 收藏
    如何使用系统设备枚举器 分类: DirectX 2013-11-15 16:03 707人阅读 评论(0) 收藏
    利用 DirectShow 开发自己的 Filter 分类: DirectX 2013-11-15 16:01 686人阅读 评论(0) 收藏
    做好口碑营销需要抓住的四条法则
    情绪管理的误区
    20年,一张卡和一个时代
    消费税悄然扩围 行业协会忙协商
    一个投顾团队的股灾记忆
  • 原文地址:https://www.cnblogs.com/cl1234/p/5360394.html
Copyright © 2011-2022 走看看