`
uule
  • 浏览: 6358795 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Maven Dependency Scope

 
阅读更多

 官方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.
  • <!-- 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
    表示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项目中的包配置

 

分享到:
评论
4 楼 563139654 2017-12-25  
[color=red][/color]dfsdsd[color=orange][/coloddddddsddddddddddddddddddddddddddddddddd
3 楼 xinchufa 2017-11-08  
dd发的发给好友
2 楼 xinchufa 2017-11-08  
dddddddddddddddd
1 楼 xinchufa 2017-11-08  
[color=red][/color]dfsdsd[color=orange][/coloddddddsddddddddddddddddddddddddddddddddd                 r]      

相关推荐

    maven 关于 scope test 和 继承传递的问题

    本文将深入探讨"Maven中scope test的使用以及依赖继承传递"这一主题,帮助开发者更好地理解和应用Maven的核心特性。 首先,`scope test`是Maven依赖管理中的一个关键概念。当我们在`pom.xml`文件中为某个依赖设置`...

    Maven的Dependency测试

    **Maven的Dependency测试** 在Java开发中,Maven是一个不可或缺的构建工具,它通过管理项目的依赖关系,简化了项目的构建、编译和部署过程。本文将深入探讨Maven的Dependency测试方面,帮助开发者理解如何有效地...

    maven依赖+继承+聚合

    此外,Maven还支持依赖范围(scope),如编译(compile)、测试(test)、运行(runtime)等,以控制依赖在不同阶段的作用。 接下来是"Maven继承"。在大型项目中,多个模块可能共享相同的配置或依赖。Maven的继承...

    Maven之scope依赖范围.docx

    在Maven项目管理中,`scope`依赖范围是至关重要的概念,它决定了一个依赖在项目的不同阶段如何被引入和使用。Maven有多种scope类型,每个类型都有特定的适用场景和目的,帮助开发者精确控制项目的依赖关系。 1. **...

    maven依赖关系中的&lt;scope&gt;provided&lt;/scope&gt;使用详解

    `&lt;scope&gt;`标签在Maven的依赖管理中扮演着决定依赖范围的角色,它定义了特定的依赖在项目的哪些阶段可用,并决定了依赖是否会被包含在最终的部署包中。本文将详细解析`&lt;scope&gt;provided&lt;/scope&gt;`的使用和意义。 `...

    maven3.0 maven3.0

    &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; ``` 通过以上介绍,我们可以看到Maven 3.0在项目管理和构建过程中扮演着重要角色,其改进和特性极大地简化了Java开发者的日常工作。通过熟练掌握Maven,开发者可以高效地...

    Maven引入本地Jar包并打包进War包中的方法

    &lt;artifactId&gt;maven-dependency-plugin &lt;version&gt;2.10 &lt;id&gt;copy-dependencies &lt;phase&gt;compile &lt;goal&gt;copy-dependencies ${project.build.directory}/${project.build.finalName}/WEB-INF/lib ...

    maven3.8下载包

    &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; ``` Maven通过执行不同的生命周期阶段,如`clean`(清理项目)、`compile`(编译源代码)、`test`(运行测试)、`package`(打包应用)和`deploy`(部署应用),帮助开发者...

    ojdbc6 解决maven缺失问题

    &lt;scope&gt;system&lt;/scope&gt; ${project.basedir}/lib/ojdbc6.jar &lt;/dependency&gt; ``` 在上述代码中,`${project.basedir}/lib/ojdbc6.jar`应替换为ojdbc6.jar的实际路径。 关于标签“oralce6 maven”,这里可能有些混淆...

    Maven完全适用手册

    新增Dependency Scope** 新增的Scope如test,允许开发者指定某些依赖只用于测试阶段,避免将不必要的依赖打包到最终的制品中。 **7. 传递依赖与依赖管理** Maven2的传递依赖机制简化了依赖管理,一个项目依赖A,A...

    maven 实用指南 中文

    2. **依赖范围(Dependency Scope)**:不同类型的依赖有不同的作用范围,如compile(编译时依赖)、runtime(运行时依赖)、test(仅用于测试)等。 3. **依赖冲突解决(Dependency Resolution)**:Maven遵循“最...

    Maven配置项目依赖使用本地仓库的方法汇总(小结)

    Maven是一种流行的Java项目管理工具,它主要用于构建、报告和文档化项目。Maven使用一种叫做pom.xml的配置文件来管理项目的构建过程、依赖关系、插件等。Maven的中央仓库是包含大量预定义依赖的远程仓库,然而,在...

    maven使用文档,maven使用文档

    7. **Dependency Scope (依赖范围)** - Maven 的依赖范围包括 compile、test、provided、runtime、system 和 import。 - 不同的依赖范围决定了该依赖是否会被包含在最终的构建产物中。 8. **排除依赖** - ...

    第一个maven工程案例

    &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; ``` 3. **Maven生命周期与构建过程** Maven拥有一个清晰的生命周期,主要包括`clean`、`default`(或`compile`、`package`、`install`、`deploy`)和`site`三大阶段。在...

    Maven入门到精通

    3. **依赖范围(Dependency Scope)**:依赖可以在不同构建阶段生效,如compile、test、runtime等。 4. **远程仓库(Remote Repositories)**:除了本地仓库,Maven还支持从远程仓库(如Maven Central Repository)...

    Maven的依赖验证项目

    在压缩包中的“Maven依赖特性”可能包含了一些特定的示例或者配置,用于展示Maven如何处理不同类型的依赖特性,例如:范围(scope,如compile、test等)、排除依赖、强制版本等。通过实际操作这些例子,你可以更深入...

    Maven Web基础搭建示例

    &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt; &lt;!-- 添加其他依赖 --&gt; ... ``` ### 四、编写Web应用 在`src/main/java`下创建你的Java类,例如Servlet,实现业务逻辑。在`src/main/webapp/WEB-INF`下编写`web.xml`...

    maven-apache-maven-3.5.3.zip

    **Maven的依赖范围(Dependency Scope):** 1. `compile`:默认范围,编译时可用,打包时包含。 2. `test`:测试范围,仅在测试时可用,打包时不包含。 3. `runtime`:运行时范围,运行和测试时可用,打包时不包含...

    maven安装包

    - **依赖管理(Dependency Management)**:Maven 可以自动下载项目所需的第三方库,并管理这些库的版本,避免版本冲突。 - **插件(Plugins)**:Maven 使用插件执行各种构建任务,如编译、测试、打包、部署等。 ...

    idea离线导入maven项目

    你可以在`pom.xml`文件中直接添加对应的`&lt;dependency&gt;`标签,指定`groupId`, `artifactId`, `version`,并将`scope`设置为`compile`。这种方式适用于所有开发环境,但需要确保JAR包在项目结构中的正确位置,例如在`...

Global site tag (gtag.js) - Google Analytics