精华内容
下载资源
问答
  • Maven 依赖管理

    2020-12-19 07:41:44
    Maven 依赖管理Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。可...

    Maven 依赖管理

    Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。

    可传递性依赖发现

    一种相当常见的情况,比如说 A 依赖于其他库 B。如果,另外一个项目 C 想要使用 A ,那么 C 项目也需要使用库 B。

    Maven 可以避免去搜索所有所需库的需求。Maven 通过读取项目文件(pom.xml),找出它们项目之间的依赖关系。

    我们需要做的只是在每个项目的 pom 中定义好直接的依赖关系。其他的事情 Maven 会帮我们搞定。

    通过可传递性的依赖,所有被包含的库的图形会快速的增长。当有重复库时,可能出现的情形将会持续上升。Maven 提供一些功能来控制可传递的依赖的程度。

    功能

    功能描述

    依赖调节

    决定当多个手动创建的版本同时出现时,哪个依赖版本将会被使用。 如果两个依赖版本在依赖树里的深度是一样的时候,第一个被声明的依赖将会被使用。

    依赖管理

    直接的指定手动创建的某个版本被使用。例如当一个工程 C 在自己的依赖管理模块包含工程 B,即 B 依赖于 A, 那么 A 即可指定在 B 被引用时所使用的版本。

    依赖范围

    包含在构建过程每个阶段的依赖。

    依赖排除

    任何可传递的依赖都可以通过 "exclusion" 元素被排除在外。举例说明,A 依赖 B, B 依赖 C,因此 A 可以标记 C 为 "被排除的"。

    依赖可选

    任何可传递的依赖可以被标记为可选的,通过使用 "optional" 元素。例如:A 依赖 B, B 依赖 C。因此,B 可以标记 C 为可选的, 这样 A 就可以不再使用 C。

    依赖范围

    传递依赖发现可以通过使用如下的依赖范围来得到限制:

    范围

    描述

    编译阶段

    该范围表明相关依赖是只在项目的类路径下有效。默认取值。

    供应阶段

    该范围表明相关依赖是由运行时的 JDK 或者 网络服务器提供的。

    运行阶段

    该范围表明相关依赖在编译阶段不是必须的,但是在执行阶段是必须的。

    测试阶段

    该范围表明相关依赖只在测试编译阶段和执行阶段。

    系统阶段

    该范围表明你需要提供一个系统路径。

    导入阶段

    该范围只在依赖是一个 pom 里定义的依赖时使用。同时,当前项目的POM 文件的 部分定义的依赖关系可以取代某特定的 POM。

    依赖管理

    通常情况下,在一个共通的项目下,有一系列的项目。在这种情况下,我们可以创建一个公共依赖的 pom 文件,该 pom 包含所有的公共的依赖关系,我们称其为其他子项目 pom 的 pom 父。 接下来的一个例子可以帮助你更好的理解这个概念。

    接下来是上面依赖图的详情说明:

    App-UI-WAR 依赖于 App-Core-lib 和 App-Data-lib。

    Root 是 App-Core-lib 和 App-Data-lib 的父项目。

    Root 在它的依赖部分定义了 Lib1、lib2 和 Lib3 作为依赖。

    App-UI-WAR 的 pom.xml 文件代码如下:

    http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0com.companyname.groupnameApp-UI-WAR1.0warcom.companyname.groupnameApp-Core-lib1.0com.companyname.groupnameApp-Data-lib1.0

    App-Core-lib 的 pom.xml 文件代码如下:

    http://maven.apache.org/xsd/maven-4.0.0.xsd">Rootcom.companyname.groupname1.04.0.0com.companyname.groupnameApp-Core-lib1.0jar

    App-Data-lib 的 pom.xml 文件代码如下:

    http://maven.apache.org/xsd/maven-4.0.0.xsd">Rootcom.companyname.groupname1.04.0.0com.companyname.groupnameApp-Data-lib1.0jar

    Root 的 pom.xml 文件代码如下:

    http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0com.companyname.groupnameRoot1.0pomcom.companyname.groupname1Lib11.0com.companyname.groupname2Lib22.1com.companyname.groupname3Lib31.1

    现在当我们构建 App-UI-WAR 项目时, Maven 将通过遍历依赖关系图找到所有的依赖关系,并且构建该应用程序。

    通过上面的例子,我们可以学习到以下关键概念:

    公共的依赖可以使用 pom 父的概念被统一放在一起。App-Data-lib 和 App-Core-lib 项目的依赖在 Root 项目里列举了出来(参考 Root 的包类型,它是一个 POM).

    没有必要在 App-UI-W 里声明 Lib1, lib2, Lib3 是它的依赖。 Maven 通过使用可传递的依赖机制来实现该细节。

    展开全文
  • Maven四:Maven依赖管理

    2021-04-15 07:36:54
    1.Maven依赖管理【前置简介】 2.Maven中央仓库简介以及在项目中的使用 (1)Maven中央仓库 (2)在项目中的具体使用 3.完成拼音的要求(这个案例不是重点啦)(包括,将包结构的显示方式设置为flat) 4.target...

    本篇博客沿用Maven三中的工程和代码;

    一个要求:输入一汉字,控制台输出这个汉字的拼音。

    Java内置的没有可以实现这个功能的,需要使用第三方的jar包;如何下载这个jar包,就可以使用maven的依赖管理来自动的下载这些jar包和管理这些jar包;

    目录

    1.Maven依赖管理【前置简介】

    2.Maven中央仓库简介以及在项目中的使用

    (1)Maven中央仓库

    (2)在项目中的具体使用 

    3.完成拼音的要求(这个案例不是重点啦)(包括,将包结构的显示方式设置为flat)

    4.target:工程编译后的字节码的目录

    5.组合依赖&复杂依赖介绍(比较重要)


    1.Maven依赖管理【前置简介】

    ● Maven利用dependency(依赖)自动下载,管理第三方jar;

    ● 在pom.xml文件中配置项目依赖的第三方组件;即,我们只需要在pom.xml中配置好依赖关系,Maven就会自动的从远程仓库(或称中央仓库)中下载这些jar包;

    ● Maven会自动将依赖从远程仓库下载到本地仓库,并在工程中引用;

    ● 远程仓库:就是放在远程服务器上的,那个jar的仓库;本地仓库:就是本地的一个目录;把从远程仓库下载的jar包保存在本地的一个目录中,这样下一次再使用某个jar的时候,就不用从远程下载,直接从本地拿就可以了;

    所谓依赖就是帮助我们自动下载、管理jar的功能。

    具体使用:在pom.xml配置文件中,只需要增加如下的标签信息,将第三方的groupiId,artifactId,version写好,其就会自动的下载了。


    2.Maven中央仓库简介以及在项目中的使用

    (1)Maven中央仓库

    Maven中央仓库的检索网站:https://search.maven.org/

    如上面的MySQL中的【(82)】点击后,可以查看MySQLjava驱动的所有版本:


    (2)在项目中的具体使用 

    然后Eclipse就会自动构建和下载:(背后都是,IDE对Maven提供了支持。。。

    将jar引入后,在当前工程中,就可以使用mysql的java驱动了;


    3.完成拼音的要求(这个案例不是重点啦)(包括,将包结构的显示方式设置为flat)

    而具体上面的【输入一汉字,控制台输出这个汉字的拼音。】就需要【pinyin4j】这个在java中注明的拼音库:

    开始实测:(PS:这个例子不是重点啦)


    4.target:工程编译后的字节码的目录


    5.组合依赖&复杂依赖介绍(比较重要)

    (PS:jar包,依赖,组件,这三个可以认为是同义词~~~)

    在更多的项目中,一些比较复杂的组件,其往往不是一个jar就够的,而是由很多个jar包的组合,,而且某个组件还可能需要依赖其他组件;

    像这种情况,maven就会对这个dependency进行深入解析,将所有的依赖一次性都进行下载。

    比如:spring-webmvc这个依赖

    通过【spring-webmvc】这个例子,可以看到maven是一个很智能的工具,其可以通过当前的引用,一层层往下去找,把所有项目中所依赖的这些jar全部提炼、下载;我们只需要引入【spring-webmvc】这一个组件,maven就会把完整的jar进行下载,我们不用考虑会存在jar冲突;

     

     

     

     

     

    展开全文
  • Maven依赖管理

    2021-03-11 21:22:34
    其实依赖管理是通过依赖管理实现jar包统一管理, <dependencies> <!--引入Spring 核心容器包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring...

    Maven的版本依赖

    其实依赖管理是通过依赖管理实现jar包统一管理,

     <dependencies>
            <!--引入Spring 核心容器包-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
            </dependency>
     </dependencies>    
    

    一个dependencies,里面可以有很多的dependency ,每一个dependency都是一个依赖
    但是我们是否也会遇到依赖冲突的烦恼,多半是因为依赖版本权限不够导致的
    所以我们就要锁定依赖版本

    锁定依赖版本代码 解决依赖冲突问题

     <!--版本锁定-->
     <dependencyManagement>
            <dependencies>
            <!--引入Spring 核心容器包-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
    	</dependencies>     
    </dependencyManagement>
    

    由上可见我们主要是使用的标签 dependencyManagement 这就是依赖版本锁定
    并且需要注意
    我们是先在标签外面引入依赖,引入之后再把我们的依赖复制粘贴到我们的 版本锁定标签 dependencyManagement里面
    这样就达到了依赖版本锁定的目的

    展开全文
  • Maven依赖管理之BOM

    2021-10-25 11:39:14
    什么是BOM# BOM全称是Bill Of Materials,译作材料清单。BOM本身并不是一种特殊的文件...所以BOM的好处是用来管理一个工程的所有依赖版本信息。 一个BOM的格式# <modelVersion>4.0.0</modelVersion>

    什么是BOM#

    BOM全称是Bill Of Materials,译作材料清单。BOM本身并不是一种特殊的文件格式,而是一个普通的POM文件,只是在这个POM中,我们罗列的是一个工程的所有依赖和其对应的版本。该文件一般被其它工程使用,当其它工程引用BOM中罗列的jar包时,不用显示指定具体的版本,会自动使用BOM对应的jar版本。

    所以BOM的好处是用来管理一个工程的所有依赖版本信息。

    一个BOM的格式#

    <modelVersion>4.0.0</modelVersion>
        <groupId>com.niceshot</groupId>
        <artifactId>test-BOM</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>pom</packaging>
        <name>Test-BOM</name>
        <description>parent pom</description>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>test</groupId>
                    <artif
    展开全文
  • maven 依赖管理原则

    2021-08-27 01:24:00
    参考maven-两大依赖原则 - SegmentFault 思否 在开发中,我们可能会出现一个项目存在多个相同版本不同的jar包,在这个时候我们就需要解决maven包冲突的问题(常见的异常有:Class not found,Method not found,...
  • 以下程序依赖jar包fastjson dom4j,会将目录下的jar包依赖方式打印成maven依赖的pom文件方式,部分文件运行可能获取的manifest为空,可以将有问题的jar包拿出来,再次运行,手动添加pom依赖。 import java.io.File;...
  • Maven 依赖管理机制

    2021-02-24 14:16:12
    目录传递依赖依赖调解依赖管理依赖作用域 传递依赖 传递依赖没有级别限制, 只有出现循环依赖问题 依赖调解 依赖调解决定当出现多个不同版本的依赖时使用哪个版本.但是你也可以在你的项目显式指定依赖的版本. 当出现...
  • 最后发现执行demo找不到程序包,然后我clear install都没有用 jar包什么的也都添加到libraries里了但是就是没有,后来我仔细一想 不对啊,我执行maven关libraries什么事(阿里官方文档看的我头昏了),依赖有没有才...
  • 然而,我遇到了一些粗暴的边缘与Maven依赖管理.我想知道这些是否是工具和范例的限制,依赖管理的必要的邪恶,或者我是否使用错误的工具.>首先是传递依赖关系的问题.据了解,如果您提供依赖关系,Maven将依次找到依赖...
  • 1、首先第一步按快捷键ctrl+alt+shift+s 打开libraries,移除爆红的maven依赖 2、注释爆红的依赖 3、点击lifecycle中的clean 4、把注释取消,然后再次刷新即可
  • 聊一聊 Maven 依赖管理

    2021-02-14 11:00:00
    转自:data4链接:www.jianshu.com/p/f6ca45865025管理依赖Maven 核心功能之一,下面通过如何引入 jar 包;如何解析 jar 包依赖;包冲突是如...
  • 8. Maven依赖管理 - 引入依赖依赖管理(引入依赖)1.目标能够掌握依赖引入的配置方式2.路径导入依赖导入依赖练习依赖范围3.讲解3.1导入依赖 导入依赖坐标,无需手动导入jar...
  • 主要在父pom.xml中管理maven依赖,主要依赖如下: Spring boot和Spring cloud依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-
  • 关于Maven依赖管理和依赖范围 1.如何进行依赖配置 传递性依赖和可选依赖,排除依赖 其中依赖范围scope用于控制依赖和编译,测试,运行的classpath的关系,三者的关系如下: 1.compile: 默认编译依赖范围。...
  • 3、springcloud springalibaba springboot 版本依赖管理统一配置 正文 单独建一个common的maven工程,内部生成一个core module。 核心就两块,一块是最外层的 common-parent(pom artifacId的名字),一块是内层的...
  • Maven 依赖管理 推荐分布式微服务电商源码 Maven 一个核心的特性就是依赖管理。当我们处理多模块的项目(包含成百上千个模块或者子项目),模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,...
  • 一、maven依赖原则 1、依赖路径最短优先原则 一个项目Demo依赖了两个jar包,其中A-B-C-X(1.0) , A-D-X(2.0)。由于X(2.0)路径最短,所以项目使用的是X(2.0)。 2、pom文件中申明顺序优先 如果A-B-X(1.0) ,A-C-X...
  • 1. 依赖配置 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖 依赖格式: 说明: groupId: 组织(群组)ID 通常为域名反写 artifactId: 依赖所属项目ID 通常是项目名称 version: 依赖版本号 示例: 我...
  • Maven依赖jar包冲突常见的解决方法

    千次阅读 2020-12-23 04:55:47
    第一步判断jar是否加载,还是 加载的jar由于maven依赖管理存在传递依赖,造成依赖的jar版本号不对,相应的类找不到,或者是相应类版本不对,没有对应的方法。一 造成jar 冲突的原因:如果项目中存在对同一jar不同版本...
  • Maven多模块项目依赖管理及dependencies与dependencyManagement的区别1、DepencyManagement应用场景当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、...
  • Maven依赖机制简介

    2020-12-21 12:44:19
    单个项目的依赖管理并不难,但是当你面对包含数百个模块的多模块项目和应用时,Maven能帮你保证项目的高度控制力和稳定性。大纲:传递性依赖排除、可选依赖依赖范围依赖管理导入依赖系统依赖传递性依赖传递性依赖是...
  • 前言我们在项目开发中经常会将一些通用的类、方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用。一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存在一个...
  • 概览:如何导入maven项目至eclipse中建立自有MavenJava类库服务器建立符合maven代码库标准的自定义类库Maven管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。我们平时用IDE开发都是把所需要的类库一股...
  • Maven依赖机制理解

    2020-12-24 10:35:49
    那么问题来了,像Log4j这样的包管理工作就必须自己去配置,假设一个项目有十几个依赖包,那么上面的方式工作量就是相当庞大的。二、Maven方式:为了解决上面的弊端,使用Maven方式将很快的解决...
  • 每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突 如何解决依赖冲突 首先查看产生依赖冲突的类jar,其次找出我们不想要的依赖类jar,手工将其排除在外就...
  • 知识点-Maven的常用命令管理项目的生命周期 1.目标 掌握Maven的常用命令 2.路径 clean命令 compile命令 test命令 package命令 install命令 3.讲解 3.1clean命令 清除编译产生的target文件夹内容,可以配合相应...
  • 现在基本上每个稍微有点规模的Java项目都会依赖到众多的jar包,而Maven应该是目前管理jar包依赖最流行的工具。然而,过多复杂的jar包依赖就可能造成版本冲突问题。比如:项目依赖A和B;A依赖C1.0,B依赖C2.0,如果C...
  • 属性类别:自定义属性** 作用 等同于定义变量,方便统一维护 定义格式: <!--定义自定义属性--> <properties>...聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个p
  • 首先使用IntelliJ IDEA打开maven项目,选择需要解决冲突的项目工程 打开后显示的依赖关系如下 不存在依赖冲突时,如下图: 查看整个项目的依赖关系,如下图: 存在冲突时,如下图: 解决冲突: ...
  • 单个项目的依赖管理并不难, 但是当你面对包含数百个模块的多模块项目和应用时,Maven能帮你保证项目的高度控制力和稳定性。 大纲: 传递性依赖 排除、可选依赖 依赖范围 依赖管理 导入依赖 系统依赖 传递性依赖 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 154,863
精华内容 61,945
关键字:

maven依赖管理

友情链接: kcsj.rar