转载自:http://blog.csdn.net/fanchou/article/details/36421743
假如,你有一个已经下载或者编译好的jar包(本地),如何加入到maven的项目中?
举例子吧:
别人实现了bloom-filter算法,打了一个Java-bloomfilter-1.0.jar的包。
1、找到并下载该包到本地,可以任意找个位置保存,例如保存在mylib文件夹下;
2、安装该jar包到maven的本地仓库中,主要用到maven的命令:
root]# mvn install:install-file -Dfile=java-bloomfilter-1.0.jar -DgroupId=com.sina -DartifactId=java-bloomfilter -Dversion=1.0 -Dpackaging=jar
上面的命令解释:
-Dfile:指明你当前jar包的位置(就是第1步存放jar的路径+jar包名);
-DgroupId, -DartifactId, -Dversion:三个参数,就是指明了存放maven仓库中的位置;(看后面的相关解释或者阅读文献【1】);
-Dpackaging :猜测就是指明文件类型;
3、在执行完上述maven安装命令后,系统在默认的maven仓库中,按照参数指定的位置创建文件夹和文件,并移入jar包。您需要在你的maven项目的pom.xml文件中加入
该jar包的引用即可:
<dependency>
<groupId>com.sina</groupId>
<artifactId>java-bloomfilter</artifactId>
<version>1.0</version>
</dependency>
4、编译你的工程项目,利用mvn compile测试是否有错。按照常理应该是不会再有问题了。
***********************万恶的分割线********************************
这里多写一点吧,maven项目的pom.xml文件内的依赖,都是先从本地的maven仓库搜寻,如果找不到,再去寻址下载。这里讲一下,它是如何搜索本地仓库的。
默认是在您当前用户名下的.m2的repository文件夹下,依据pom.xml提供的信息进行搜寻。例如,我们上面在pom.xml文件中加入了如下信息:
<dependency>
<groupId>com.sina</groupId>
<artifactId>java-bloomfilter</artifactId>
<version>1.0</version>
</dependency>
maven,就会将<groupId>的值,以“.”分割,分成多个文件夹,“.”左边的文件夹认为是包含“.”右边的文件夹。就比如:<groupId>com.sina</groupId>
就是com/sina/。它会找com/文件夹下是否包含sina文件夹。找到后,以次查找<artifactId>、<version>,分别当成是一个文件夹,并认为是前者包含后者,最终认定路径是:“xxxUser/.m2/repository/com/sina/java-bloomfilter/1.0/“
找到路径后,又会查找以“<artifactId>+“-”+<version>的文件名的jar包,即java-bloomfilter-1.0.jar包。
如果找不到,就会网上的<groupId>指定的地址,然后按照上述方式再查找该包,并下载包。下载的位置也是按照上述方式创建文件夹,进行保存。
PS:我们的jar开始就是利用mvn的命令安装的。它自然会按照上述路径的组织方式,进行jar包的安放。(别忘了,那几个重要参数!!!)
参考文献:
<1>http://blog.csdn.NET/wypblog/article/details/9729621;
<2>http://hi.baidu.com/hotthought/item/57ce101556d0ba0de75c36c5;
<3>http://www.blogjava.Net/fancydeepin/archive/2012/06/12/380605.html;
<4>http://www.cnblogs.com/richard-jing/archive/2013/01/27/Maven_localjar.html;
<5>http://blog.chinaunix.net/uid-25150840-id-4221117.html;