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
找到maven-public并点击之前的图中仓库列表就已经有lemonsoft-repo,那是因为我之前就已经添加了,这里请读者不要费解
-
在maven-public界面中我们找到最下面的列表框,然后点击左侧的我们刚刚添加的仓库lemonsoft-repo,点击向右方向的箭头,把lemonsoft-repo加入到右侧的列表框,如下图所示
选择lemonsoft-repo并点击右箭头
确认无误后,点击保存按钮:Save
- 然后我们去用户管理里面添加一个用于上传jar文件的开发者账户,当然你也可以是一所管理员用户,但是不建议这么做。点击Users选项,然后点击CreateUser按钮
- 在添加用户界面按照自己的情况输入用户信息,并点击创建用户按钮:Create User,如下图,是我填写的:
- 添加后,回到用户列表,我们可以看到刚刚添加的用户
到此为止,我们在Nexus中的配置告一段落了,接下来我们搞搞
0x04 配置要上传Jar的项目
- 首先,我们需要找到Maven的安装目录,如果不知道,我们可以使用如下命令来查询:
mvn --version
执行命令后得到如下图的路径:
找到maven安装路径- 按照路径打开后,进入conf文件夹,找到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详情信息到此为止,大功告成,下载一下依赖就可以搞定了。
网友评论