美文网首页mavenJava服务器端编程项目设计
发布项目到私有Maven仓库并引用

发布项目到私有Maven仓库并引用

作者: 柠檬信息技术有限公司 | 来源:发表于2017-08-25 12:58 被阅读156次

    0x01 前言

    企业内部通常会将系统内部的常用工具类等公用Class打成Jar包,发布到企业的私有Maven仓库中,然后其他开发人员通过配置Maven私有仓库的信息来从企业内部的仓库添加依赖。花了一个小时时间把整个流程跑通一遍,特此记录一下,有需要的朋友可以作为参考。

    0x02 要准备的东西

    • Maven私有仓库,我使用的是 Nexus OSS 3.5

    这部分比较简单,Nexus下载地址:http://www.sonatype.org/nexus/go,网上很多教程,我也会抽时间把这个流程重新跑一遍记录一下,之前搭环境比较忙,没有截图。

    • 要上传到Maven仓库的项目

    在这里我随便写了一个工程,工程名称为:jkit-common-beans

    • 要引用上面这个依赖的项目

    这里用的是我很久之前的一个工程,工程名为:yoyolearn-user-center,这个工程只要是Maven工程(有POM.xml)文件即可

    0x03 开始折腾Nexus仓库

    • 打开Nexus管理界面


      打开Nexus管理界面
    • 接下来我们登录Nexus,然后找到顶部导航栏中的齿轮按钮,点击进去之后点击左侧的Repositories按钮,然后找到添加仓库按钮:Create Repository


      登录后选择创建仓库
    • 在弹出的界面中,我们选择 Maven2 hosted


      选择maven2-hosted
    • 在新界面我们填写仓库的名称,在这里我写的是lemonsoft-repo,填写完毕之后在最下面有一个下拉菜单,Hosted-Deployment policy,下拉选择Allow redeploy,之后点击添加仓库按钮:Create Repository

      填写仓库信息并创建
    • 添加成功之后,返回仓库列表后我们可以看到刚刚添加的仓库lemonsoft-repo,但是我们不选择我们刚刚添加的仓库,而是在仓库列表中找到并点击Maven-Public

    之前的图中仓库列表就已经有lemonsoft-repo,那是因为我之前就已经添加了,这里请读者不要费解

    找到maven-public并点击
    • 在maven-public界面中我们找到最下面的列表框,然后点击左侧的我们刚刚添加的仓库lemonsoft-repo,点击向右方向的箭头,把lemonsoft-repo加入到右侧的列表框,如下图所示


      选择lemonsoft-repo并点击右箭头

      确认无误后,点击保存按钮:Save

    添加到右侧之后,点击保存
    • 然后我们去用户管理里面添加一个用于上传jar文件的开发者账户,当然你也可以是一所管理员用户,但是不建议这么做。点击Users选项,然后点击CreateUser按钮
    选择添加用户
    • 在添加用户界面按照自己的情况输入用户信息,并点击创建用户按钮:Create User,如下图,是我填写的:
    填写用户信息并添加用户
    • 添加后,回到用户列表,我们可以看到刚刚添加的用户
    填写完成后的用户列表.png

    到此为止,我们在Nexus中的配置告一段落了,接下来我们搞搞

    0x04 配置要上传Jar的项目

    • 首先,我们需要找到Maven的安装目录,如果不知道,我们可以使用如下命令来查询:
    mvn --version
    

    执行命令后得到如下图的路径:

    找到maven安装路径
    • 按照路径打开后,进入conf文件夹,找到settings.xml文件,并打开
    找到settings.xml配置文件
    • 在settings.xml中找到servers节点,然后在里面添加一个server子节点,写入id/username/password信息。其中id随便命名,但是要记住,稍后我们会用到,username和password填写上一步中我们在Nexus后台中新添加的用户名和密码
    <server>
        <id>lemonsoft-nexus</id>
        <username>liuri</username>
        <password>xxxxxxxxxxxx</password>
    </server>
    

    如下图所示:

    编辑settings文件中的server
    • 打开我们要发布Jar到Nexus的项目的POM文件,添加distributionManagement节点,在其中添加repository子节点,然后填写id和url,其中id填写我们刚刚在settings.xml中配置的那个server-id,即lemonsoft-nexus,然后url填写我们刚才在Nexus中添加的仓库的地址,我们可以通过在Nexus的仓库列表中,点击我们lemonsoft-repo仓库右侧的copy按钮来获取仓库地址,如下图
    仓库列表获取仓库地址

    填写完ID和URL之后整体的POM.xml文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>net.lemonsoft.jkit</groupId>
        <artifactId>jkit-common-beans</artifactId>
        <version>0.0.1</version>
    
        <distributionManagement>
            <repository>
                <id>lemonsoft-nexus</id>
                <url>http://www.lemonsoft.net:20004/repository/lemonsoft-repo/</url>
            </repository>
        </distributionManagement>
    
        <!--打包带源码-->
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    其中build节点中的所有配置是为了让我们把源码一同传上去,方便其他开发者调试的时候看到源码,如果读者你要是不需要,那么不配置即可。

    • 配置完了,接下来,我们打开终端(Windows下的CMD或者PowerShell均可),切换到我们的项目路径(即POM.xml)所在路径,然后输入如下命令:
    mvn deploy -Dmaven.test.skip=true
    

    其中-Dmaven.test.skip=true选项是为了跳过单元测试,可根据自己选择是否需要加上。

    • 稍等一会,Maven会自动的build,然后上传到你的私有Maven仓库中,直到我们看到BUILD SUCCESS的信息,说明成功了
    上传成功
    • 这时候我们去Nexus,依次点击上面导航栏的魔方图标 -> 左侧的Brose折叠菜单 -> conponents -> 我们创建的仓库 lemonsoft-repo
    打开仓库详情页

    弹出仓库详情页面后可以看到刚刚我们上传上来的文件

    上传成功列表

    点击进去,可以看到我们上传的文件详情

    上传后的详情页面

    OK,我们到此为止把上传也搞定了,接下来,我们来看看怎么在另外一个工程引用刚刚上传的依赖。

    0x05 引用私有仓库中的依赖

    • 首先我们打开要引用之前上传的依赖的工程,找到POM.xml打开,在project节点中添加repositories - repository节点,分别填写id/name/url信息,其中ID和name节点内容随便写,没有任何影响,url节点要填写我们创建的仓库url,如下配置:
    <project>
    ......
        <repositories>
            <repository>
                <id>lemonsoft-nexus</id>
                <name>LemonsoftNexusRepo</name>
                <url>http://www.lemonsoft.net:20004/repository/lemonsoft-repo/</url>
            </repository>
        </repositories>
    ......
    </project>
    
    • 接下来,在dependencies节点里面添加一个依赖
    <dependency>
        <groupId>net.lemonsoft.jkit</groupId>
        <artifactId>jkit-common-beans</artifactId>
        <version>0.0.1</version>
    </dependency>
    

    其中groupID、artifactId和version信息和我们刚刚提交的包中所写的信息保持一致,也可以在Nexus的component详情中查询到

    查看component详情信息

    到此为止,大功告成,下载一下依赖就可以搞定了。

    相关文章

      网友评论

        本文标题:发布项目到私有Maven仓库并引用

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