maven项目中添加自己的jar包

时间:2022-07-05 09:15:24


本文又是帮助我老年人记忆的文章。不过,对于初学者应该也是有帮助的。其实,我也是个初学者。嘿嘿~~~

不废话了,step by step:

      假如,你有一个已经下载或者编译好的jar包(本地),如何加入到maven的项目中?

      PS:本人是在linux操作系统

      举例子吧:

      别人实现了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;