美文网首页
maven安装到本地仓库、打包成库

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

作者: e辉 | 来源:发表于2017-11-21 23:56 被阅读224次

    大多数情况下,我们都在使用别人开发好的第三方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寻找依赖包的时候就是根据坐标去找的,所以到时候给别人的时候叮嘱一下,千万不能放错目录。

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

    相关文章

      网友评论

          本文标题:maven安装到本地仓库、打包成库

          本文链接:https://www.haomeiwen.com/subject/cwievxtx.html