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

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

1、添加maven-assembly-plugin 插件

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

 <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

2、建立maven坐标

      <!-- 创建这个项目的组织名称(一般为组织的域名反写) -->
      <groupId>com.Ehui</groupId>
      <!-- 表示一个单独项目的唯一标识符 -->
      <artifactId>timeseries</artifactId>
      <!-- 项目的版本号 -->
      <version>1.0</version>

3、项目依赖包控制

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

  • 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<scope> 设置为provided的原因是因为我要使用这个包的项目中已经拥有spark-core_2.11这个包了,所以这里打包时可以不需要。


依赖范围图

4、maven install

安装到你的本地库中

image.png

最后

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,534评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,084评论 6 342
  • 1.编写POM Maven项目的核心文件是pom.xml,POM(Project Objcet Model)项目对...
    zlcook阅读 11,144评论 7 26
  • Maven简单介绍 Maven是一个项目管理工具。强大,但是很容易使用。 它包含了: 一个项目对象模型 (Proj...
    高公子Daniel阅读 9,783评论 4 60
  • 这个开学季,我给孩子更换了新的幼儿园。原来的幼儿园是家庭会所式的教育方式,班容量相对较少,教育方式也相对随意,老师...
    茱莉Julia阅读 3,173评论 0 4