`
xinklabi
  • 浏览: 1560617 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

Maven Dependency设置详解

 
阅读更多

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的配置代码,本人不常来这里找。不过各有所好,大家选择合适自己的

分享到:
评论

相关推荐

    Maven的Dependency详解

    命令参数详解: mvn install:install-file: maven 安装命令 -D groupId : 包名(在repository里面会建立一个如org/zenika/widget方件夹) -D artivactId: artifact 写你的jar名称 -D version:版本号名称 -D packaging...

    maven依赖+继承+聚合

    这是一个maven依赖+继承+聚合的小例子,用来参考和学习maven

    Maven dependencies与dependencyManagement的区别详解

    主要介绍了Maven dependencies与dependencyManagement的区别详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Maven聚合与继承实例详解.docx

    在javaweb高速发展的今天,我们软件设计人员往往会用很多种...Maven有很好的依赖管理系统(Dependency Management System)和项目生命周期的管理(Project Leftcycle),而其中的依赖管理是本文阐述和做出实例的重点。

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven依赖管理 (Dependency Management) 3.5.6. 站点生成和报告 (Site Generation and Reporting) 3.6. 小结 4. 定制一个Maven项目 4.1. 介绍 4.1.1. 下载本章样例 4.2. 定义Simple Weather项目 4.2.1...

    sortpom:Maven插件,可帮助用户对pom.xml进行排序

    Sortpom Maven插件 Maven插件通过格式化XML并按预定义的顺序组织XML部分来帮助用户对pom.xml进行排序。 标准化排序的pom的主要优点是它们更具可读性,并且不同模块pom之间的比较变得更加容易。 目标概述 SortPom...

    DependencyInjector:轻量级依赖注射器

    为什么使用它非常轻巧(仅将javax.inject和javax.annotation-api作为依赖项) 允许逐步过渡到现有项目的注入您可以实现自己的注入方法和行为支持具有可选依赖项的项目整合它使用Maven,可以通过将其添加到pom.xml中...

    详解在IDEA中将Echarts引入web两种方式(使用js文件和maven的依赖导入)

    一:js引入 首先要从Echart下载 选择你想要的图表后,滑到最下面的下载 将下载好的文件放入 ... [removed][removed] ...&lt;dependency&gt; &lt;groupId&gt;org.webjars.bower &lt;artifactId&gt;echarts &lt;version&gt;4.7.0&lt;/v

    mybatis分页插件pageHelper详解及简单实例

    mybatis分页插件pageHelper详解及简单实例 工作的框架spring springmvc mybatis3 首先使用分页插件必须先引入maven依赖,在pom.xml中添加如下 &lt;!-- 分页助手 --&gt; &lt;dependency&gt; &lt;groupId&gt;...

    阿里云OSS使用demo,阿里云OSS+springCloud使用详解.zip

    阿里云OSS使用demo,阿里云OSS+springCloud使用详解,里面又controller的详细代码,也有阿里云oss上传的封装,对了如果你使用的是maven,记得导入: &lt;dependency&gt; &lt;groupId&gt;com.aliyun.oss&lt;/groupId&gt; &lt;artifactId&gt;...

    mattermost-plugin-anonymous:Mattermost 的端到端加密插件

    对于 Mattermost 系统管理员 插件设置您可以从mattermost插件市场安装插件,或按照构建和部署部分中的说明进行操作 引导您的用户只有已生成密钥对的用户才能解密加密消息。 密钥对是特定于通道的,因此需要为每个...

    shacl-plugin:SHACL4Protege-适用于Protégé的SHACL约束验证插件

    SHACL4Protege v1.0.0 适用于ProtégéDesktop [1]的SHACL约束验证插件。 该插件提供了一个选项卡,您可以在其中打开和编辑SHACL文件(请参阅B),以验证Protégé中加载的本体(请参阅A)。 此外,您可以按本体的类...

    Android代码-PhotoOut

    PhotoOut 拍照/图片选择--裁剪--压缩 一条龙,兼容7.0,支持fresco和glide,Picasso.多种自定义配置. &gt; 一条龙地支持fresco和glide,Picasso ... Add the dependency dependencies { compile'com.github.h

    Android代码-用于做Path动画的自定义View

    实现详解: http://blog.csdn.net/zxt0601/article/details/53040506 图片-&gt;SVG-&gt;Path的正确姿势 ,用法进阶: http://blog.csdn.net/zxt0601/article/details/54018970 使用: Step 1. 在项目根build.gradle文件中...

    roaster:一个Java解析器库,可轻松解析和格式化Java源文件

    安装如果您使用的是Maven,请将以下依赖项添加到您的项目中:&lt; properties&gt; &lt; version&gt;2.22.2.Final&lt;/ version&gt;&lt;/ properties&gt;&lt; dependency&gt; &lt; groupId&gt;org.jboss.forge.roaster&lt;/ groupId&gt; &lt; artifactId&gt;roaster-...

    使用weixin-java-miniapp配置进行单个小程序的配置详解

    在进行小程序后端接口开发方面,使用weixin-java-tools中的weixin-...maven中在依赖中添加如下配置项: &lt;dependency&gt; &lt;groupId&gt;com.github.binarywang&lt;/groupId&gt; &lt;artifactId&gt;weixin-java-miniapp&lt;/artifactId

    deequ:Deequ是一个在Apache Spark之上构建的库,用于定义“数据的单元测试”,用于测量大型数据集中的数据质量

    Deequ-数据的单元测试 Deequ是一个在Apache Spark之上构建的库,用于定义“数据的单元测试”,该单元可以测量大型数据集中的数据质量。 我们很高兴收到反馈和。... 例如: Maven &lt;dependency&gt; &lt;groupId&gt;com.

    详解SpringBoot集成jsp(附源码)+遇到的坑

    (1)创建Maven web project; (2)在pom.xml文件添加依赖; (3)配置application.properties支持jsp (4)编写测试Controller (5)编写JSP页面 (6)编写启动类App.java 2、新建SpringInitialzr 3、pom文件 ...

    spring-boot-集成mybatis带分页page

    通过 Maven 插件集成的,所以运行插件使用下面的命令: &gt;mvn mybatis-generator:generate Mybatis Geneator 详解: &gt;http://blog.csdn.net/isea533/article/details/42102297 ## application.properties 配置 ```...

Global site tag (gtag.js) - Google Analytics