Maven--可选依赖】的更多相关文章

我们知道,maven的依赖关系是有传递性的.如:A-->B,B-->C.但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A的依赖.在maven的依赖管理中,有两种方式可以对依赖关系进行,分别是可选依赖(Optional Dependencies)以及依赖排除(Dependency Exclusions). 一.可选依赖 当一个项目A依赖另一个项目B时,项目A可能很少一部分功能用到了项目B,此时就可以在A中配置对B的可选依赖.举例来说,一个类似hibernate的项目,它支持对mys…
现在的项目一般是拆分成一个个独立的模块,当在其他项目中想要使用独立出来的这些模块,只需要在其pom.xml使用<dependency>标签来进行jar包的引入即可. <dependency>其实就是依赖,关于依赖管理里面都涉及哪些内容,我们就一个个来分析下: 依赖传递 可选依赖 排除依赖 我们先来说说什么是依赖: 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖. 格式为: <!--设置当前项目所依赖的所有jar--> <dependencies>…
使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 . 解决方式如下: 1.通过其它方式下载如下两个文件: http://repo1.maven.org/maven2/.index/nexus-maven-repository-index.properties http://repo1.maven.org/m…
一,编写pom.xml   首先我们看一下pom.xml   <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0…
我们项目中用到的jar包可以通过依赖的方式引入,构建项目的时候从Maven仓库下载即可. 1. 依赖配置    依赖可以声明如下: <project> ... <dependencies> <dependency> <groupId>group-a</groupId> <artifactId>artifact-a</artifactId> <version>1.0</version> <exc…
若排版紊乱可查看我的个人博客原文地址 maven的依赖特性很多很杂,这里大概总结一下,maven的依赖特性主要是依赖范围和传递依赖,前者会影响后者,这篇文章会介绍传递依赖的传递原则,出现冲突传递依赖默认如何处理,我们自己可以怎么处理等内容 依赖范围 依赖范围会影响传递性依赖,同时也会影响项目构建任务中使用的classpath. Maven有以下6种依赖范围: compile 这是默认范围.如果没有指定,就会使用该依赖范围.编译依赖对项目所有的classpath都可用.此外,编译依赖会传递到依赖的…
以下内容引用自https://ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_manage_dependencies.html: 一.前言 Maven的一个核心特性就是依赖管理.当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务.Maven展示出了它对处理这种情形的高度控制. 二.可传递性依赖 一种相当常见的情况,当一个库,比如说A依赖于其他库B.假如,另外一个项目C想要使用A,那么项目也需要使…
前面我们讲了maven项目中的最重要的文件:pom.xml 配置文件相关内容.介绍了pom 是如何定义项目,如何添加依赖的jar 包的等. 我们知道,在Maven的生命周期中,存在编译.测试.运行等过程,那么有些依赖只用于测试,比如junit:有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用的是JDBC接口),而是在运行时用到的:还有些依赖,编译期要用到,而运行期不需要提供,因为有些容器已经提供了,比如servlet-api在tomcat中已经提供了,…
如果项目中maven依赖太多,由于还有jar之间的间接依赖,所以可能会存在依赖冲突.依赖冲突大部分都是由于版本冲突引起的,查看maven的依赖关系,可以找到引起冲突的间接依赖 如上图,通过Dependency Hierachy可以查看到间接依赖,这里slf4j-api与其他引用的版本有冲突,我们可以exclude禁用这个间接依赖,代码如下: <dependency> <groupId>displaytag</groupId> <artifactId>disp…
maven 检查依赖冲突和版本冲突   在项目发布的时候,一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:   1 2 3 mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false   mvn -U dependency:tree -Dverbose   dependency: tree是检查版本…
Maven的依赖构件包含一个依赖范围属性,这个属性描述的是三套classpath的控制,即编译.测试.运行. 举个例子Junit依赖只是在测试范围(classpath)使用,而在运行的时候不使用,还有Servlet api在编译的时候使用,在运行部署的时候不使用,因为大部分容器都已经提供该依赖支持. <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit<…
看了视频 实在忍不住上了idea的贼船 不过这玩意确实有点坑爹,因为用的人少,所以很多配置是有问题的 例如maven配置tomcat热更新 以及tomcat的maven配置 我这里放几张图作为备用 配置maven web项目跟tomcat的时候一定要选这个按钮进去 然后把一些maven的依赖,全部添加到tomcat,否则tomcat会找不到jar包,然后在web运行的时候报错,启动的时候是不会出现错误的 我这里已经把maven依赖添加进去了,所以不会有问题,右侧已经没有elements这个列表选…
目录 Eclipse中m2e插件构建web项目的步骤 Maven工具构建web项目再导入Eclipse的步骤 [一].Eclipse中m2e插件构建web项目的步骤 第一步:创建项目,按照 New –>  FIle –> Other –> Maven –> MavenProject : 第二步:选择项目存放路径: 第三步:选择项目类型 Archetype  : 第四步:填写项目基本信息 第五步:修改为web类型项目,配置content directory: 第六步:配置Maven…
1.Maven的依赖1.1 添加依赖1.2 依赖范围(sope)依赖范围与classpath的关系1.3 依赖的传递性1.2.1 依赖传递性的冲突问题1. 第一种情况2. 第二种情况1.2.2 通过exclusions元素排除不想要的传递性依赖1.2.3 依赖传递性冲突问题解决办法总结1.4 依赖版本的界限 1.Maven的依赖 Maven的依赖通过dependencis元素来配置依赖,这是Maven最强大的特性之一.它支持传递性依赖. 1.1 添加依赖 在Maven中需要使用在dependen…
例如 <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> # 上面三项坐标基础 <scope></scope> #依赖范围 <type></type> #依赖得类型 <optional></optional>…
今天Maven添加依赖时候发现json lib这个包引入之后,死活出不来JSONObject这个类,打开Maven Project视图,发现json-lib这个包没下下来,以前也遇到过类似问题,都是网络原因没下载成功,反复了几次都没能下成功. 以前也遇到过类似问题,都是通过下载jar包 安装到本地仓库的方式解决的,下载json-lib的jar.  我都是在中央仓库找到对应版本jar下载下来:https://mvnrepository.com/ 点击上面的 红色箭头指向的jar就可以下载, 不知道…
使用Maven插件将依赖包 jar包 war包及配置文件输出到指定目录 写在前面 ​ 最近遇到一个朋友遇到一个项目需要将 maven 的依赖包和配置文件分开打包然后用脚本执行程序.这样的好处在于可以随时修改配置文件内容及查看 jar 包.如果将所有打成一个 jar 包就会有个问题(例如:修改数据库连接位置需要重新打包这样就失去了使用配置文件的有优点). 本文利用Maven插件将依赖包.jar/war包及配置文件输出到指定目录 1. 使用 maven-dependency-plugin 插件将依赖…
我们知道dependencies是可以被继承的,这个时候我们就想到让我们的发生了共用的依赖元素转移到parent中,这样我们又进一步的优化了配置.可是问题也随之而来,如果有一天我创建了一个新的模块,但是这个模块不需要这些parent的依赖,这时候如何处理? 是的,maven的依赖管理就是来解决这个问题的 增加一个新的元素:dependencyManagement 从上面的列表中我们发现dependencyManagement也是可以被继承的,这恰恰满足了我们的需要,它既能够让子模块继承到父模块的…
着重基础之—构建工具—Maven的依赖管理 项目构建利器Maven给我们开发人员带来了极大的便利,从繁琐的jar包管理中脱身的程序员终于可以有时间再进入另一个坑了. 我今天要给大家分享的内容是我在实际开发中遇到的一个问题,Maven的依赖管理,以及冲突管理.相关内容其实网上已经有了很多,我在此记录,只是想强化下记忆. 依赖单元:Maven依赖是使用Maven坐标来定位的,而Maven坐标主要由GAV(groupId, artifactId, version)构成.最简单的依赖: <depende…
Maven外部依赖 正如大家所了解的那样,Maven确实使用 Maven 库的概念作依赖管理.但是,如果依赖是在远程存储库和中央存储库不提供那会怎么样? Maven 提供为使用外部依赖的概念,就是应用在这样的场景中的. 举一个例子,让我们在 Maven创建项目 这一章节中创建的项目做以下的修改. 添加 lib 文件夹到 src 文件夹 复制任何的 jar 到 lib 文件夹.这里使用的是 ldapjdk.jar,这是 LDAP 操作的辅助库. 现在我们的项目结构看起来应该类似下面这样: 在这里,…
微服务spring boot,在使用maven下载依赖的时候非常慢,几十K的依赖JAR,也需要漫长的等待,更悲剧呢的漫长等待结果提示下载失败,为彻底解决这个问题,决定使用国内的镜像库,想象总是美好的,百度了N个镜像库后,都提示不能使用,经过自己不懈的努力,找到了非常好用的阿里镜像库,速度杠杠的,致敬阿里.   配置方法 找到maven的安装目录,conf文件夹下的setting.xml文件   打开setting.xml文件,找到mirrors节点添加阿里镜像库地址: <mirror> <…
举例A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖).这里有一个需要特别注意的,即B和C同时依赖于X,假设B依赖于X的1.0版本,而C依赖于X的2.0版本,A究竟依赖于X的1.0还是2.0版本呢?这就看Classloader的加载顺序了,假设Classloader先加载X_1.0,而它就不会再加载X_2.0了,如果A恰恰希望使用X_2.0呢,血案就这样不期而遇了.…
问题 maven传递依赖 解决方案   前段时间,开发中遇到一个关于maven依赖包的问题:由于业务需要,支付网关对账代码中的slf4j-api包需要更新,原包为1.5.8版本,需要更新到1.6.4版本.如下图:   本来应该是件很简单的事情,把pom.xml文件里的依赖项修改下就OK了嘛!可是,打开pom.xml文件才发现,dependency里根本没有slf4j的配置信息.那么,问题来了,这个jar包是怎么引进来的呢?研究了半天也没找到根源,由于还有其他工作,就没有继续研究,临时解决方案为:…
现在,你也知道Maven做依赖管理使用Maven仓库的概念.但是,如果依赖是不提供任何远程存储库和中央存储库发生了什么? Maven提供为使用外部依赖的概念,应用在这样的场景. 举一个例子,让我们做以下修改项在目Maven创建项目 这一章节中创建. 添加lib文件夹到src文件夹 复制任何的jar到lib文件夹.我们使用ldapjdk.jar,这是LDAP操作的辅助库. 现在我们的项目结构看起来应该像下面的: 在这里,有自己的特定项目,这是很平常案例库,它可以包含jar文件可能无法在任何Mave…
烦恼:当我们手上有一堆三方件jar包,想要转成maven管理时,需要一个一个配置进pom文件中,而且GAV信息还得去收集. 为了快速生成如下信息,我们可以这样.... GAV:groupId + artifactId + version <dependency> <groupId></group> <artifactId></artifactId> <version></version> </dependency&g…
IntelliJ IDEA 删除自定义的 Maven 框架依赖 IntelliJ Idea中添加Maven Archetype,但是IntelliJ Idea中并没有提供删除的方法. windows中可以通过下面方式删除Maven 框架 可以使用Everything全局搜索,或者在idea安装的目录 然后删除UserArchetypes.xml中对应的就可以…
在Maven中依赖的域有这几个:import.provided.runtime.compile.system.test 1compile 的范围 当依赖的scope为compile的时候,那么当前这个依赖的包,会在编译的时候将这个依赖加入进来,并且在打包(mvn package)的时候也会将这个依赖加入进去 意思就是:编译范围有效,在编译与打包时都会存储进去 2provided的范围 当依赖的scope为provided的时候,在编译和测试的时候有效,在执行(mvn package)进行打包成w…
什么是Maven 1 依赖的管理:仅仅通过jar包的几个属性,就能确定唯一的jar包,在指定的文件pom.xml中,只要写入这些依赖属性,就会自动下载并管理jar包. 2 项目的构建:内置很多的插件与生命周期,支持多种任务,比如校验.编译.测试.打包.部署.发布... 3 项目的知识管理:管理项目相关的其他内容,比如开发者信息,版本等等 官网:http://maven.apache.org/ Maven库:http://repo2.maven.org/maven2/ 中央仓库资源:http://…
2. 快速开始 WebMagic主要包含两个jar包:webmagic-core-{version}.jar和webmagic-extension-{version}.jar.在项目中添加这两个包的依赖,即可使用WebMagic. WebMagic默认使用Maven管理依赖,但是你也可以不依赖Maven进行使用. 2.1 使用Maven WebMagic基于Maven进行构建,推荐使用Maven来安装WebMagic.在你自己的项目(已有项目或者新建一个)中添加以下坐标即可:   <depend…
使用idea创建maven项目,maven导入依赖报红,从以下几个步骤排查解决问题: 1.首先查看maven的安装和配置有没有问题.那么,要看那些内容呢.maven的安装位置.maven的setting.xml中的配置以及maven的环境变量配置.    查看maven的安装位置和相应的目录(下载的maven压缩包加压到指定目录就可以了,我的加压到D:\maven) 配置maven的配置文件setting.xml,图中是配置文件的所在目录. 查看maven本地仓库目录(默认maven本地仓库是…