`
liyixing1
  • 浏览: 959193 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

项目依赖

阅读更多
依赖具有范围,默认为全局范围

也可以指定依赖范围
Maven有以下几种依赖范围:

compile:编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;

test:测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;

provided:此依赖范围,对于编译和测试classpath有效,而对运行时无效;例如对于servlet的依赖,只有在测试和编译时有效,之后就无效了

runtime:运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,典型的就是JDBC驱动实现;

system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。

依赖传递性
简单点理解,可以看成A依赖B,B依赖C,那么A也依赖C


Maven建立一个依赖图,并且处理一些可能发生的冲突和重叠。例如,如果Maven看到有两个项目依赖于同样的groupId和artifactId,它会自动整理出使用哪个依赖,选择那个最新版本的依赖。虽然这听起来很方便,但在一些边界情况中,传递性依赖会造成一些配置问题。在这种情况下,你可以使用依赖排除。

另外,如果依赖指定了范围,那么在进行传递性依赖的时候,会做一些算法,包括如下

compile范围的依赖,会一直传递给其他范围
provided范围的依赖,只会传递给provided范围的
runtime范围的依赖,会传递给runtime和provided范围和test范围
test范围只会传递给test

排除传递依赖
<dependency>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-a</artifactId>
<version>1.0</version>
<exclusions>
<exclusion>
<groupId>org.sonatype.mavenbook</groupId>
<artifactId>project-b</artifactId>
</exclusion>
</exclusions>
</dependency>

通过exclusions和exclusion
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.5.ga</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
<version>1.1</version>
</dependency>
</dependencies>


当版本冲突时maven默认选择最新的。
但是当artifactId和artifactId不一样的时候,Maven就会认为它们是两种不同的类
库。
dependencyManagement
dependencyManagement可以作为父pom对只项目的依赖管理的统一控制


依赖版本界限
可以指定范围
(, )
不包含量词
[, ]
包含量词

如[4.0,)
,“[4.0,)”意思是任何大于等于4.0的版本,“(,2.0)”意思是任意小于2.0的版
本。“[1.2]”意思是只有版本1.2,没有其它。

方括号和圆括号可以混合用。
方括号可以看成 >= 和<=
圆括号可以看成 >和<
分享到:
评论

相关推荐

    Maven 多项目依赖关系

    本文将深入探讨Maven如何处理多项目依赖关系,并结合标签“源码”和“工具”,探讨其在实际开发中的应用。 一、Maven项目结构与POM.xml 每个Maven项目都有一个核心配置文件——`pom.xml`,它定义了项目的元数据,...

    解决idea导入项目出错,打包没有依赖问题.docx

    2. **Maven配置差异**:项目依赖管理工具(如Maven)的不同配置也可能导致问题。 3. **依赖缺失**:项目依赖未被正确识别或安装。 4. **构建脚本问题**:构建脚本(如pom.xml)可能存在问题。 #### 三、解决方案 ...

    moquette项目依赖包

    在这个“moquette项目依赖包”中,包含了运行和构建Moquette服务器所必需的jar文件。 首先,我们要理解在Java项目中,jar(Java Archive)文件是预编译的类文件和资源文件的集合,它们被打包在一起,以便于分发和...

    android5.0项目依赖工程

    这个“android5.0项目依赖工程”是一个专门为Android 5.0优化的开发框架,它将多个组件整合到一个单一的依赖项中,以便开发者可以更方便、高效地进行开发工作。下面我们将深入探讨这个依赖工程所涉及的核心知识点。 ...

    添加非托管到Maven项目依赖关系.doc

    "Maven 项目依赖关系管理" Maven 项目依赖关系管理是 Java 应用程序开发中非常重要的一步。Maven 是一种流行的项目管理工具,可以帮助开发者快速构建和管理项目。然而,在实际开发中,我们常常会遇到一些不可以在...

    C语言项目依赖管理:策略、工具与实践

    本文详细介绍了C语言项目依赖管理的策略、工具和实践,并通过案例分析展示了如何将这些方法应用于实际项目中。通过这些方法,开发者可以更有效地管理和维护C语言项目的依赖,提高项目的质量和效率。 有效的依赖管理...

    vue安装项目依赖.md

    暂时的项目依赖

    深入Maven依赖分析:优化项目依赖的秘诀

    1. **依赖管理**:Maven能够自动处理项目依赖,开发者只需在POM文件中声明所需的库,Maven会自动下载并管理这些依赖。 2. **项目信息管理**:Maven能够统一管理项目的元数据,如项目名称、版本号、开发者信息等。 ...

    maven依赖小例子

    Maven依赖管理遵循“传递性”原则,即如果你的项目依赖A库,而A库又依赖B库,Maven会自动将B库也一并引入。这大大简化了项目的构建过程,但同时也可能导致依赖冲突,需要通过排除机制或调整依赖版本来解决。 在`...

    java中maven,管理项目依赖,如pom.xml

    Java中的Maven是一个至关重要的构建工具,它极大地简化了Java应用程序的开发过程,尤其是在管理项目依赖方面。Maven通过一个名为`pom.xml`的项目对象模型(Project Object Model)文件,来定义项目的构建规则、依赖...

    Node.js-David帮助你的Node.js项目依赖保持最新

    标题中的“Node.js-David帮助你的Node.js项目依赖保持最新”揭示了我们今天要讨论的主题:使用David这个工具来管理并确保Node.js项目的依赖库始终处于最新状态。在Node.js开发过程中,保持依赖库的更新至关重要,...

    idea 运行项目依赖war包的办法 不需要用新tomcat运行

    idea 运行项目依赖war包的办法 不需要用新tomcat运行,直接和项目一起启动的办法.

    Android Studio jar、so、library项目依赖

    Android Studio jar、so、library项目依赖,资源对应博文: http://zhengxiaopeng.com/2014/12/13/Android-Studio-jar、so、library项目依赖/

    IDEA 开发多项目依赖的方法(图文)

    IDEA 开发多项目依赖的方法 本文主要介绍了使用 IntelliJ IDEA 创建多模块项目的方法,并详细讲解了如何使用 Maven 创建父工程、子模块,以及如何管理依赖关系。下面是相关的知识点: 1. IntelliJ IDEA 是一款功能...

    导出maven项目依赖的jar包(图文教程)

    Maven 项目依赖 jar 包导出详细教程 Maven 是一个Project Object Model(POM)项目管理工具,广泛应用于 Java 项目中。其中一个非常重要的功能是管理项目依赖关系。下面我们将详细介绍如何将 Maven 项目依赖的 jar ...

    vitmio项目依赖

    Vitmio项目依赖是针对Vitmio视频直播项目的核心组件,这个依赖包含了项目运行所必需的库和资源。为了确保视频直播项目的正常运作,开发者需要将这些依赖正确地集成到他们的主项目中。以下是对Vitmio项目依赖的详细...

    Maven 是一个流行的 Java 项目依赖管理工具

    Maven 是一个流行的 Java 项目依赖管理工具

    一个用于管理 Windows C/C++ 项目依赖库的命令行工具

    一个用于管理 Windows C/C++ 项目依赖库的命令行工具

    查看maven项目依赖的jar包树.txt

    该文档是如何查看maven项目依赖的jar包树,请大家下载!

    Node.js-winstall安装项目所需的所有依赖项

    在 Node.js 开发过程中,管理项目依赖是至关重要的,而 `winstall` 正是为此目的设计的一个工具。本文将深入探讨 `winstall` 的功能、使用方法以及如何通过它来安装项目所需的所有依赖项。 `winstall` 是一个 Node....

Global site tag (gtag.js) - Google Analytics