前面讲了maven一些关于Maven的简单知识,今天我给大家分享一些Maven的依赖管理。我相信用过maven的人都知道,它很重要的功能就是通过依赖来添加jar包。...中的坐标 俗称 gav:使用下面三个向量子仓库中唯一定位一个 Maven 工程 在项目中的 pom.xml 文件中,我们可以看到下面gav的定义: 1)groupid:公司或组织域名倒序...2.1、依赖的详细配置 为了避免不知道说的哪些配置属性,看下面图就明白了,就是dependency下的属性配置,全部有9个,讲其中的7个。 ? ...这个有依赖传递有好处,也有坏处,坏处就是jar包的冲突问题,比如,A 依赖 B(B的版本为1),C 依赖 B(B的版本为2),如果一个项目同时需要A和C,那么A,C都会传递依赖将B给加载进来, ...看图 1)开发阶段(MyEclipse提供),看下图以此证明我们说的 java web 5.0项目: ? java web 6.0项目: ?
Maven的核心概念 那么既然你看到了这篇文章,我暂且就认为你对Maven有一定的了解并且已经完成了Maven的下载安装和环境变量的配置。...关于Maven的安装配置网上教程有很多,我就不做重复的事情了,我们直接进入正题。...来看看关于Maven的核心概念: 约定的目录结构 POM 坐标 依赖 仓库 生命周期 继承 聚合 那么,我么就从这八个方面来深入学习一下Maven。...,为中央仓库分担流量,减轻中央仓库的压力,同时更快地响应用户请求 而仓库中保存的内容就是Maven工程,可分为三类: Maven自身所需要的插件 第三方框架或工具的jar包 自己开发的Maven工程 6...7.继承 假设一个情景: Hello项目依赖的JUnit版本:4.0 Hello2项目依赖的JUnit版本:4.0 Hello3项目依赖的JUnit版本:4.9 由于test范围的依赖不能传递,
1、简介 1.1、什么是依赖冲突 依赖冲突是指:在 Maven 项目中,当多个依赖包,引入了同一份类库的不同版本时,可能会导致编译错误或运行时异常。...3、如何排除依赖 我们先来解释下什么是传递性依赖 3.1、什么是传递性依赖 比如当我们项目中,引用了A的依赖,A的依赖通常又会引入B的 Jar 包,B可能还会引入C的 Jar 包。...3.2、如何排除依赖 这种情况下,想要解决依赖冲突,可以靠升级/降级某些依赖项的版本,从而让不同依赖引入的同一类库,保持一致的版本号。另外,还可以通过隐藏依赖、或者排除特定的依赖项来解决问题。...要弄明白聚合工程,得先清楚“父子工程”的概念: 父工程:不具备任何代码、仅有pom.xml的空项目,用来定义公共依赖、插件和配置; 子工程:编写具体代码的子项目,可以继承父工程的配置、依赖项,还可以独立拓展...而Maven聚合工程,就是基于父子工程结构,来将一个完整项目,划分出不同的层次,这种方式可以很好的管理多模块之间的依赖关系,以及构建顺序,大大提高了开发效率、维护性。
只要正确配置了项目的依赖,Maven 在编译的时候就可以自动下载项目所需的所有依赖项。但是如果我们使用不当,依赖管理可能会引入问题,特别是当我们使用如 [2.3.0,) 这样的版本范围指定的时候。...每次构建项目时,Maven 都会尝试获取新的依赖版本。如果新版本引入了不兼容的更改,可能导致编译错误,甚至更微妙的运行时错误。...如下所示,我这边原本的配置 fastjson 的版本是 1.2.79,从右侧的 maven 依赖中我们可以看到,项目中下载的 fastjson 的版本是 1.2.79。...另外如果一些软件自身的升级是向下兼容的,那么使用范围版本配置可能没什么关系,但是如果一些软件的版本不是向下兼容的,那么使用范围版本配置那肯定是有问题的。...在父 POM 中,我们可以用 元素定义一个或多个依赖项的版本,然后在项目的各个模块中引用它们,无需在每个模块中指定版本。
由于依赖关系是由Maven坐标描述的,你可能会想:“这意味着我的项目只能依赖于Maven工件!”答案是,“当然,但这是一件好事。”这迫使你只能依赖Maven可以管理的依赖关系。...有五个作用域可用: compile - 这是默认作用域,如果未指定则使用默认值。编译依赖项在所有类路径中都可用。此外,这些依赖关系会传播到依赖项目。...*版本,则更好的版本号要求是[1,1.9999999)。 排除 限制依赖项的可传递依赖项有时很有用。依赖项可能具有错误指定的作用域,或者与项目中的其他依赖项冲突的依赖项。...exclusions告诉Maven不要在classpath中包含指定的工件,即使它是该项目的一个或多个依赖项的依赖项(传递依赖项)。例如, maven-embedder 依赖于maven-core。...如果子POM没有元素,但父POM有,则父值将成为有效值。请注意,这纯粹是对XML的操作;不涉及插件本身的代码或配置,只涉及元素,而不是它们的值。
从去年开始转java以来,一直在寻找一款趁手的兵器,eclipse虽然是很多java程序员的首选,但是我发现一旦安装了一些插件,workspace中的项目达到数10个以后,经常崩溃,实在影响编程的心情....参看下图,可以发现左侧的Project目录树里,已经显示了文件夹的结构,双击pom.xml打开,我们添加一个junit的依赖项,intelliJ IDEA的智能提示功能非常强,连依赖项的版本号,都能智能感知出来...注:如果是添加Junit的依赖项,记得要加test,即: ? 随便写几个类试试 ?...还可以有专门的junit配置,再刚才点击+添加配置时,可以添加Junit配置,这个大家试试就知道了,不过,我不建议这么弄,因为有一个更简单的方法,如下图,先打开有@Test的类文件,然后把光标停在要测试的方法...点击OK后,刚才的错误就消除了,但是这时idea不会自动创建maven的目录结构,所以建议还是把module给delete掉,重新再来一次,注意这次一定记得要手动选择一下module sdk,再点击finish
一年前,当我和小伙伴小龙一起做一个外包项目的时候,受到了严重的鄙视。我那时候还不知道 Maven,所以搭建项目用的还是最原始的方式,小龙不得已在导入项目的时候花了很长时间去下载项目依赖的开源类库。...借此机会,有必要隆重地向大家介绍一下 Maven 了。 01、Maven 是什么?...另外,我认为 Maven 特别优秀的一点是,它把项目依赖的所有开源类库都从远程中央仓库下载到了指定的本地仓库中,也就是说,这些开源类库可以在多个项目之间共用,无需重复下载——假如我用 Maven 构建项目的话...,小龙就不用下载那么多开源类库了,他的本地仓库中可能已经有了——我也就不会被鄙视了。...大多数 Maven 项目的依赖项列表都会很长很长,为了便于说明,下面我只列出某些具有特色的。
Spring Boot Starter Web 预先打包了这些依赖项。 作为一个开发者,我不需要再担心这些依赖项和它们的兼容版本。...Spring Initiatlizr 让创建 Spring Boot 项目变的很容易,但是,你也可以通过设置一个 maven 项目并添加正确的依赖项来开始一个项目。...手动设置一个 maven 项目 这里有几个重要的步骤: 在 Eclipse 中,使用文件 - 新建 Maven 项目来创建一个新项目 添加依赖项。 添加 maven 插件。...如果你使用 Eclipse IDE,Eclipse maven 插件确保依赖项或者类文件的改变一经添加,就会被编译并在目标文件中准备好!在这之后,就和其它的 Java 应用程序一样了。...在 Spring Boot 项目中,当你确保下面的依赖项都在类路里面的时候,你可以加载 H2 控制台。
但是如果你经常使用 Maven,可能会发现 Maven 有一些地方用的让人不太舒服: 来 Maven 的配置文件是 XML 格式的,假如你的项目依赖的包比较多,那么 XML 文件就会变得非常非常长; 来...这时候项目结构应该类似下图所示,使用 Maven 的同学应该比较熟悉,因为这和 Maven 的项目结构几乎完全一致。...相较于 Maven 一大串的 XML 配置,Gradle 的依赖项仅需一行。...中间几行即是设置代理的配置项。当然其他几行我也建议你设置一下,把 Gradle 运行时的文件编码设置为 UTF8,增加跨平台兼容性。...虽然很多人都说 XML 维护起来不麻烦,但是我觉得,维护一个光是依赖就有几百行的 XML 文件,不见得就比 Gradle 脚本简单。
Spring Boot Starter Web 预先打包了这些依赖项。 作为一个开发者,我不需要再担心这些依赖项和它们的兼容版本。...Spring Initiatlizr 让创建 Spring Boot 项目变的很容易,但是,你也可以通过设置一个 maven 项目并添加正确的依赖项来开始一个项目。...手动设置一个 maven 项目 这里有几个重要的步骤: 1、在 Eclipse 中,使用文件 - 新建 Maven 项目来创建一个新项目 2、添加依赖项。 3、添加 maven 插件。...如果你使用 Eclipse IDE,Eclipse maven 插件确保依赖项或者类文件的改变一经添加,就会被编译并在目标文件中准备好!在这之后,就和其它的 Java 应用程序一样了。...在 Spring Boot 项目中,当你确保下面的依赖项都在类路里面的时候,你可以加载 H2 控制台。 web 启动器 h2 jpa 数据启动器 其它的依赖项在下面: ?
但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服: 1、一来Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文件就会变得非常非常长; 2、二来XML...这时候项目结构应该类似下图所示,使用Maven的同学应该比较熟悉,因为这和Maven的项目结构几乎完全一致。...相较于maven一大串的XML配置,gradle的依赖项仅需一行。...中间几行即是设置代理的配置项。当然其他几行我也建议你设置一下,把gradle运行时的文件编码设置为UTF8,增加跨平台兼容性。...完成同样的功能,gradle脚本的长度要远远短于maven配置文件的长度。虽然很多人都说XML维护起来不麻烦,但是我觉得,维护一个光是依赖就有几百行的XML文件,不见得就比gradle脚本简单。
但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服: 一来Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文件就会变得非常非常长; 二来XML文件不太灵活...这时候项目结构应该类似下图所示,使用Maven的同学应该比较熟悉,因为这和Maven的项目结构几乎完全一致。...相较于maven一大串的XML配置,gradle的依赖项仅需一行。另外,最新 Java 面试题整理好了,大家可以在Java面试库小程序在线刷题。...中间几行即是设置代理的配置项。当然其他几行我也建议你设置一下,把gradle运行时的文件编码设置为UTF8,增加跨平台兼容性。...虽然很多人都说XML维护起来不麻烦,但是我觉得,维护一个光是依赖就有几百行的XML文件,不见得就比gradle脚本简单。
4.Maven 常用命令 5.Maven 有哪些优点和缺点 1)优点 2)缺点 6.什么是Maven的坐标 7.通过坐标如何定位地址 8.Maven的依赖范围有哪些(在scope中指定) 9.Maven...Maven 的主要功能主要分为 5 点: 依赖管理系统 多模块构建 一致的项目结构 一致的构建模型和插件机制 2.什么选用 Maven 进行构建? 首先,Maven 是一个优秀的项目构建工具。...mvn clean package :清除以前的包后重新打包。 5.Maven 有哪些优点和缺点 1)优点 简化了项目依赖管理。...编译依赖项在所有(编译,测试,运行)类路径中都可用。此外,这些依赖关系会传播到依赖的项目 provided:这很像compile,但表示您希望JDK或容器在运行时提供它。...它只在编译和测试类路径上可用,不可传递。 runtime:此范围表示编译不需要依赖项,但需要执行依赖项。它在运行时和测试类路径中,但不在编译类路径中。
2.1 m2eclipse安装 2.2配置eclipse 3创建一个maven项目 3.1项目的结构 3.2Eclipse中maven常用的命 3.3使用maven命令 0.什么是maven 参考 https...,我自己觉得,Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学了一点maven的人来说,...还有个问题,可能有人说需不需要设置maven的环境变量,可以设置,但是如果只是使用Eclipse的maven的插件而不需要使用命令行,就不用了。反正我有设置。...3.1项目的结构 maven的工程一般都是如下的结构: pom.xml:用于定义或者添加jar包的依赖 src-main:用于存放java源文件 src-test:用于存放测试用例。...也就是说,当你新建一个maven工程,或者clean一个maven工程后,如果没有使用这两个命令,直接针对类进行测试,会跑出java.class.notfound的错误。
核心功能 Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包,,这个pom.xml包我后面会叙述,不过已经学习过maven的...,如果相同架构的项目有十几个,那么我们就需要将这一份jar包复制到十个不同的工程中我们一起来看看CRM工程的大小 使用传统的CRM项目 使用maven构建 4.Maven的依赖管理 为什么使用maven...展示出了他对处理这种情形的高度控制 传统的web项目中,我们必须将工程所依赖的jar包复制到工程中,导致工程变的很大,那么maven是如何通过操作使工程变少的呢 通过图解可以发现maven工程不直接将...9.4 一组标准集合 maven将整个项目管理过程定义为一组标准集合,比如通过maven构建工程有标准的目录结构,有标准的生命周期阶段,依赖管理有标准的坐标定义 9.5 插件目标 maven管理项目生命周期都是基于插件完成的...10.使用idea开发meven项目 这个就是几个简单的参数配置一下没什么东西讲,我就放个流程图好了 1. 2. 3. 6. 7. 8. 9. 10
但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服: 1. Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文件就会变得非常非常长; 2....这时候项目结构应该类似下图所示,使用Maven的同学应该比较熟悉,因为这和Maven的项目结构几乎完全一致。...相较于maven一大串的XML配置,gradle的依赖项仅需一行。...虽然很多人都说XML维护起来不麻烦,但是我觉得,维护一个光是依赖就有几百行的XML文件,不见得就比gradle脚本简单。...也许是因为我上面说的原因,也许有其他原因,不得不承认的一件事情就是gradle作为一个新兴的工具已经有了广泛的应用。spring等项目已经从Maven切换到了gradle。
这个项目他是用Eclipse开发的,我现在要用IDEA继续,担心结构上出现问题? 为什么一个Maven项目被导入进IDEA了能正常work,它的项目结构Project Structure是咋样的?...Project项目设置 鼠标选中项目(和IDEA不一样,此处必须选中),右键选择Properties就可以对该项目进行配置: 配置项“多如牛毛”,令人望而生畏呀。...这里就不一一介绍了,图形化的东西了解起来也容易。但是你是否发现,众多配置项中却不见Module字样,怎么肥四?...解释.settings目录 eclipse项目.settings目录下的配置比较杂,各种后缀名的都可能见到,绝大多数是文本文件,格式为properties或xml。...相关类喽: 什么原因?
核心功能 Maven的核心功能是合理叙述项目间的依赖关系,通俗点 就是通过pom.xml文件的配置获取jar包不用手动的去添加jar包,,这个pom.xml包我后面会叙述,不过已经学习过maven的...2.Maven能够解决什么问题 在想Maven可以解决什么问题之前我们先来想想我们开发过程中经常遇到什么问题 1、我们需要引用各种 jar 包,尤其是比较大的工程,引用的 jar 包往往有几十个乃至上百个...其实这我们在前面就提到过了即通过配置pom.xml的文件来配置依赖,而Maven的一个核心特征就是依赖管理,当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成了一个极为困难的任务Maven...9.4 一组标准集合 maven将整个项目管理过程定义为一组标准集合,比如通过maven构建工程有标准的目录结构,有标准的生命周期阶段,依赖管理有标准的坐标定义 9.5 插件目标 maven管理项目生命周期都是基于插件完成的...10.使用idea开发meven项目 这个就是几个简单的参数配置一下没什么东西讲,我就放个流程图好了 1. ?
项目管理工具,管理jar,有一个仓库 2.maven有什么用?... pom.xml——maven 项目核心配置文件 注意:如果是普通的 java 项目,那么就没有webapp 目录 三 、 maven的Archetype原型 1.Archetype是什么?...SNAPSHOT //当前项目的版本,SNAPSHOT,表示是快照版本,在开发中release为正式发行版 3.maven两大优点 1.依赖管理 坐标,不处理的结果...1.什么是依赖范围? * maven项目在构建的几个步骤中使用jar包,通俗讲就是告诉maven什么时候使用该jar包 2.分别有哪些依赖范围?...初始化成功后,控制台弹出信息 2.Idea集成 maven 创建项目 初始化后出现的目录结构 刚刚初始化完成的目录结构是这样的,如果要servlet要用注解配置也不能删除web.xml,会无法访问servlet
奇怪的是,为什么还要搞个mvn compile呢? ? 听了这位朋友这么说,我想起了,我刚刚开始使用mvn的时候,仿佛也是这样的。 我老大就是这么教我的,我就这么用,感觉蛮爽的... ?...细心点也会发现里面Test相关的类都是junit包目录下的,并且在pom.xml文件中我们也看到了由于默认依赖junit。 ? ok,以上便是使用maven命令创建的一个java标准项目。...,maven也不知道我们需要的是xml、properties还是什么配置文件。...mvn -Dmaven.test.skip=true:不执行测试用例,也不编译测试用例类。...mvn help:all-profiles 列出当前项目下的可用配置文件。 mvn help:describe:描述插件和/或Mojo(Maven普通的Old Java Object)的属性 。
领取专属 10元无门槛券
手把手带您无忧上云