Maven Dependency设置,详解!

2023-11-12

come from : http://www.javaeye.com/topic/240424

用了Maven,所需的JAR包就不能再像往常一样,自己找到并下载下来,用IDE导进去就完事了,Maven用了一个项目依赖 (Dependency)的概念,用俗话说,就是我的项目需要用你这个jar包,就称之为我的项目依赖你这个包,换句话说,你这个JAR包就是我这个项目的Dependency。

      于是很多人在刚用Maven的时候,就会在加Dependency时栽跟头,明明我手头上就有需要的JAR嘛,它偏不让我用,什么道理,跟着就是生闷气,少点耐性的,就会说Maven怎么怎么不爽,其实,如果你理解了Maven的一些机制,一些配置及管理的流程,就会觉得它其实很爽。

      我暂且不谈Maven的长篇概念(其实我也还很多很多不懂),我先给大家介绍一个简单的查找方法,让你很快地找到所需的Dependency,并配置到你的pom.xml里面去。

最快捷方法:

GOOGLE搜索:maven 你需的jar包名称 repository

比如我要做EJB,我要找jboss-j2ee.jar的Dependency

就在GOOGLE里输入

maven jboss-j2ee repository

在结果的第一条,进去你就可以在页面里找到下面这段

<dependency>
    <groupId>jboss</groupId>
    <artifactId>jboss-j2ee</artifactId>
    <version>4.0.2</version>
</dependency>

你把上面这段代码贴到你的Maven项目的pom适当的位置去,然后运行maven,Maven就会自动下载所需的jar及相关的pom信息,你不用管它,Maven会帮你下载,并放到适当的位置。

我再举几个查找实例,让大家熟悉一下怎么搜索

下面我要找 struts.jar

在GOOGLE里输入

maven struts repository

就很快可以找到下面这段代码

<dependency>
    <groupId>struts</groupId>
    <artifactId>struts</artifactId>
    <version>1.2.9</version>
</dependency>

我还要找hibernate

在GOOGLE输入

maven hibernate repository

在结果的第一条记录出现了很多个不同的hibernate链接(因为有很项目用了hibernate嘛)我们就选用org.hibernate的,看起来专业点嘛,呵呵

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.6.ga</version>
</dependency>

好了,SSH可不能少了中间那个S,Spring嘛

在GOOGLE里输入

maven spring repository

在第一个结果进去,我们这次选择org.springframework的,

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.5</version>
</dependency>

      其它的我就不一一举例了,大家自己试试,其实这个方法可以解决大多数常用包的Dependency查找,不用专门记那些repository下载站的网址嘛,不过始终这是非正规做法,其它要想更好地找到想要的Dependency,还是得了解maven repository是啥玩意,它的local repository库概念,以及怎样建立自己自己repository服务器(这个我还不太熟,这里就不讲了,大家自己去其它地方找相关资料,免得被我误导了)

      Maven的repository,说白了就是dependency的仓库,它按照一定的规则将dependency存放起来,以作缓存,如果本机的 repository找不到某个dependency,它就会自动去找到网上其它相关联的repository,找到的话将其下载至本地,那么下次它就不再去其它地方下载了,直接从本地获取。

本地的repository在哪可找到?

默认repository地址:当前用户的私人目录 + .m2

如果你设置了Maven目录下的conf/setting.xml的local repository属性,则不再是默认的repository地址,而使用你指定的地址。

找到下面这段,将它复制一份,放到注释外面,改成你自己的repository路径即可

<localRepository>c:/mvn repository/</localRepository>

Maven按什么规则去存放Dependency?

下面我们来拿hibernate来作例子,以介绍在Maven运行并下载到所需的Dependency后怎么缓存到本地的repository

下面这个是hibernate的Dependency配置

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.2.6.ga</version>
</dependency>

它被下载后将会被存放至

%repository%/org/hibernate/hibernate/3.2.6.ga/hibernate-3.2.6.ga.jar

其中%repository%就是你本地的repository目录!

不知大家看出来了没有,它是按你的Dependency的groupid + artifactid + version,然后以点号作分隔,来建立文件夹的,最后建立的文件夹如下

|--org

    |--hibernate

        |--hibernate

            |--3.2.6.ga

                |--hibernate-3.2.6.ga.jar

可能会有些人会问那个jar包的名字是怎么来的,细心的人或许早己观察出来了,没错,就是artifactId + "-" + version + ".jar"。

好了,下面我们按这个规则去找一下另外一个Dependency放在哪吧

<dependency>

    <groupId>com.google.gwt</groupId>

    <artifactId>gwt-servlet</artifactId>

    <version>1.4.61</version>

</dependency>

我们现在根据之前所讲的规则,先进入你的本地repository目录,然后进入com目录,再进入google目录,再进入gwt目录,再进入 gwt-servlet目录,再进入1.4.61目录,跟着你就可以发现一个名叫gwt-servlet-1.4.61.jar和其它一些文件了大家试试看吧!《注意:你在首次使用这个Dependency时,一定要运行Maven,让它去下载到需要的包,下载成功后你才能按上面的步骤找到,不然你找不到别乱骂我,你都没下载的话,肯定找不到了:(       》

      在你掌握这个技巧之后,有很多时候你可以根据所需包的package路径,自己摸它的Dependency,这个就不详谈了,总之你了解后,找Dependency不会成问题的,非常简单的事

      这个时候,就有另一些用户会提出疑问,我要用的jar包是我自己开发的,或是朋友,或是网友传来的,在网上根据找不到,怎么在Maven里面使用它们呢? 其实办法是肯定有的,而且也不难,也是常常要用到的,下面我来简单介绍一下几个方法:

前提,肯定是你先写到pom里面去,组织随你写,artifact 写你的jar名,或者随便写,version你也写上你想要的,如

<dependency>

    <groupId>com.mydomain.ooooo</groupId>

    <artifactId>my-jar</artifactId>

    <version>100.1.1</version>

</dependency>

一、用好你的IDE!

      现在大家用的IDE,无非就是Eclipse,或者netbeans,或是JBuilder,据我所知,现在大部份人都向前两者转移,这些IDE都提供了对Maven的支持,不过通常都需要你装插件才能打开并使用Maven的项目,怎么装maven插件我就不介绍了,大家自己上网找找别人写的文章吧。在你装好插件后,通常会有一个libraies目录,里面列出你项目要用到的jar包,你右键点击本地还没有添加进去的jar包,选择本地安装(Manually install artifact),选中你那个特殊的jar包,然后IDE会自动调用maven插件完成整个安装配置过程,下次你就不再这样子做了,因为你本地 repository己经有了。

二、手动将jar包放到本地repository里面去

根据先前介绍的maven repository存放规则,自己建好目录,改好jar的文件名,自己拷进去,如

进到你本地的repository目录

建一个com文件夹,点进去

再建一个mydomain文件夹,点进去

再建一个ooooo文件夹,点进去

再建一个my-jar文件夹,点进去

再建一个100.1.1文件夹,点进去

再把你的jar包,改名为my-jar-100.1.1.jar,放到100.1.1文件夹里面去,

       然后运行你的maven项目,看看它会不会build成功,事实上如果你之前做的文件夹没错,大小写没问题,或没其它小失误,你的项目就可以正常用到你自己的jar包了

三、直接到http://repo1.maven.org/maven2/ 查找

      不过这也需要你知道maven repository的存放规则才知道怎么在网站上找,找到你还得自己写dependency的配置代码,本人不常来这里找。不过各有所好,大家选择合适自己的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Maven Dependency设置,详解! 的相关文章

随机推荐

  • 因果3-因果图

    上一章我们介绍了潜在结果模型 这一章我们尝试从图的角度理解因果 大家都有图论基础 我就不多赘述图的基本概念了 在因果图里我们主要研究DAG directed acyclic graph 有向无环图 如图1 图1 一个DAG例子 Bayesi
  • 22道高级 React 面试题

    Q1 什么是虚拟DOM 虚拟DOM VDOM 它是真实DOM的内存表示 一种编程概念 一种模式 它会和真实的DOM同步 比如通过ReactDOM这种库 这个同步的过程叫做调和 reconcilation 虚拟DOM更多是一种模式 不是一种特
  • 【JavaDebug(二)】之Mysql语法异常java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; chec

    本文章由公号 开发小鸽 发布 欢迎关注 老规矩 妹妹镇楼 一 异常 一 异常描述 java sql SQLSyntaxErrorException You have an error in your SQL syntax check the
  • 【binkw32.dll下载】binkw32.dll缺失怎么办

    binkw32 dll文件对一些电脑软件 电脑游戏等程序的正常运行起到关键性作用 对于弹出缺少此类文件的弹窗 用户们很多时候也摸不着头脑 程序明明上次都能正常运行 突然就弹出缺少binkw32 dll文件的提醒窗口 通过小编此次编辑的文章
  • 修改DIV滚动条样式

    滚动条样式 div webkit scrollbar 滚动条整体样式 width 5px 高宽分别对应横竖滚动条的尺寸 height 5px div webkit scrollbar thumb 滚动条里面小方块 border radius
  • 剖析ElasticSearch的评分计算过程

    剖析elasticsearch的评分计算过程 es搜索结果是怎样的排序的 准备测试数据 搜索 剖析参数含义 结论 es搜索结果是怎样的排序的 es的排序准则的相关度 根据搜索 关键词 计算关键词在一个文档中的得分 得分越高结果越靠前 那么计
  • github服务器停止响应,如何解决“git pull,致命:无法访问'https://github.com ... \':服务器空回复”...

    当我使用Git命令 git pull 更新我的存储库时 消息如下 致命 无法访问 来自服务器的空回复 如何解决 git pull 致命 无法访问 https github com 服务器空回复 而且我尝试使用GitHub的应用程序 但此提醒
  • QT5开发之 信号与槽机制

    文章目录 什么是信号与槽 信号与槽原理 如何实现信号与槽机制 实现方式 UI方式 代码方式 QT4 QObject类 connect和disconnect 连接函数 QT4 QT5使用 找到类与类的信号与槽函数 QT4 QT5使用 举例 总
  • Windows下 Cppcheck 的使用教程

    1 Cppcheck是什么 CppCheck是一个C C 代码缺陷静态检查工具 不同于C C 编译器及其它分析工具 CppCheck只检查编译器检查不出来的bug 不检查语法错误 所谓静态代码检查就是使用一个工具检查我们写的代码是否安全和健
  • 计算机窗口移动不了怎么办,电脑鼠标拖不动文件怎么办 电脑鼠标拖动不灵敏如何解决...

    在我们使用电脑的时候 往往都会用到鼠标拖动文件 不知道有没有遇到过电脑鼠标拖不动文件的时候 这种情况大家是怎么解决的呢 不知道没关系 下面小编为大家带来电脑鼠标拖不动文件的解决方法 大家可以按照下面的步骤即可解决 电脑鼠标拖不动文件怎么办
  • 支付宝支付回调,回调日志记录

    1 支付报支付回调方法 public function aliPayNotify try app PayService alipay collect app gt verify collectData collect gt all 获取支付
  • 【Zabbix实战之运维篇】Zabbix监控平台的简单性能调优

    Zabbix实战之运维篇 Zabbix监控平台的简单性能调优 一 Zabbix性能优化介绍 1 造成Zabbix服务器变慢原因 2 Zabbix性能调优的方法 二 检查Zabbix服务器的资源占用情况 1 检查Zabbix各组件容器的资源占
  • [转载]YUV格式纹理贴图的例子

    frameworks native opengl tests gl2 yuvtex gl2 yuvtex cpp 是Android提供的yuv格式纹理贴图的例子 前面先申请存放纹理数据的buffer yuvTexBuffer new Gra
  • 根据哈夫曼树构建哈夫曼编码

    实验题 构造哈夫曼树生成哈夫曼编码 编写一个程序 构造一棵哈夫曼树 输出对应的哈夫曼编码和平均查找长度 并对下表 所示的数据进行验证 单词及出现的频度 单词 The of a to and in that he is at on for H
  • Github下载任意版本的VsCode

    下载历史版本VsCode zip 下载链接由三部分组成 固定部分 commit id VSCode win32 x64 版本号 zip 固定部分 https vscode cdn azure cn stable Commit id 打开 v
  • 嵌入式linux通过systemd自启动一个python代码

    一直想实现一段自启动的代码 今天尝试了下 成功了 做个记录 首先 我用的是imx6ull处理器 嵌入式linux内核版本为4 9 88 然后 上位机用的虚拟机ubuntu22 04 01 先在ubuntu上面试了试 能够自启动 然后再下载到
  • linux系统调用(持续更新....)

    随着自己接触越来越多的linux的系统函数发现自己在linux系统调用方面有很多不足 每次遇到系统调用函数都要百度一遍看一下用法 所以我打算写一篇博客来记录在开发过程遇到的系统调用函数 方便自己查阅 本文持续更新 1 popen 函数 2
  • Unity-协同程序

    知识点一 Unity是否支持多线程 1 首先要明确一点Unity是支持多线程的 只是新开线程无法访问Unity相关对象的内容 Unity中的多线程 要记住关闭 Unity中去使用 如果说 我们一开始在Start内创建一个多线程 那么我们无法
  • 【算法】最近点对问题(暴力破解法)

    简单的画了一张图 通过暴力方式 进行一次比较获取两个点之间的最短距离 点对最近问题 暴力破解法 include
  • Maven Dependency设置,详解!

    come from http www javaeye com topic 240424 用了Maven 所需的JAR包就不能再像往常一样 自己找到并下载下来 用IDE导进去就完事了 Maven用了一个项目依赖 Dependency 的概念