maven安装到本地仓库、打包成库

大多数情况下,我们都在使用别人开发好的第三方jar包,然后在maven pom.xml中添加依赖,这样maven就去本地仓库中找或则中央仓库中下载。但是我们自己开发的一些常用的工具类,或则写得比较好的项目,想提供给别人使用时,这就需要使用maven把项目打包成jar包,然后你只需要把jar包和maven依赖给别人就可以了。

1、添加maven-assembly-plugin 插件

将当前jar包中依赖的jar包一并打成jar包。

 
    maven-assembly-plugin
    
        
            jar-with-dependencies
        
    
    
        
            make-assembly
            package
            
                single
            
        
    

2、建立maven坐标

      
      com.Ehui
      
      timeseries
      
      1.0

3、项目依赖包控制

为什么需要对项目依赖包的进行控制呢?举例来说,你开发时需要做测试,你需要依赖于junit的jar,但是部署应用时并不需要它, 因为单元测试不会在生产环境上跑,也就是说最终打包的jar或者war不包含junit的jar。又如你开发web程序,你的servlet/jsp进行编译需要依赖于servlet-jsp的标准api(J2EE的jar),但是部署时也是不需要它的,因为你的应用服务器肯定有这些东西。使用maven对项目依赖包的管理非常方便,只需要在添加依赖的时候设置节点的值就可以了。

  • compile: 默认的scope。编译、测试、打包全都需要。compile参与依赖传递,就是说,你的项目A依赖于B(依赖scope是compile),项目C依赖于你的项目A,那么C也就依赖于B。
  • provided: 表示JDK或者容器会在Runtime时提供这些包,如jdk,或者别的地方种已经提供这些包,如servlet api。provided的东西在编译和测试时会用到,不参与传递依赖。这个依赖范围合适与项目构建成库的时候使用。
  • runtime: 表示编译时不需要,但测试和运行时需要,最终打包时会包含进去。
  • test: 只用于测试阶段(测试的编译和测试的运行),典型的就是junit的jar。
  • system: 和provided类似,但要求jar是你的系统里已有的, 不会在repository里找,如rt.jar,tools.jar这些。
  • import: 简单的说,你的项目的pom可以继承另一个项目的pom,从而继承了父项目的依赖关系,但是因为之后single inheritance的限制,所以创造了import,使得你可以“导入”或者说“继承”任何一到多个项目的依赖关系。

下面是我的项目范围依赖,spark-core_2.11 设置为provided的原因是因为我要使用这个包的项目中已经拥有spark-core_2.11这个包了,所以这里打包时可以不需要。


maven安装到本地仓库、打包成库_第1张图片
依赖范围图

4、maven install

安装到你的本地库中

maven安装到本地仓库、打包成库_第2张图片
image.png

最后

当安装项目到本地仓库之后,你就可以在自己的maven仓库中看到安装好的包了。 如:在 repository/com/Ehui/ 路径下面你将会发现有一个timeseries 目录。提供给其他人使用的时候,你只需要把包与第二步中的maven坐标给别人就好了。需要注意的是,maven寻找依赖包的时候就是根据坐标去找的,所以到时候给别人的时候叮嘱一下,千万不能放错目录。

感恩之心,珍惜当下。人生最重要的时刻就是现在。

你可能感兴趣的:(maven安装到本地仓库、打包成库)