背景
在Java项目开发中代码的依赖包通过Maven进行管理的,依赖包都是通过远程拉取,这样的坏处是每次都需要从远程拉取,速度相对会慢。同时不能友好的管理自己开发的jar包。所以这里引入了私有库资源管理工具 Nexus Repository Manager来主要解决上面提到的问题。并且使用nexus拉取了第三方库时会把依赖包存储在本地,下次在拉取的时候直接私有库拉取,相对速度会快很多。
Nexus Respository Manager安装
根据服务器环境,这里选择window服务器,下载安装包
-
下载后解压,在其bin目录中执行安装命令,以window 服务的形式安装
F:\nexus-3.10.0-04-win64\nexus-3.10.0-04\bin>nexus /install Nexus3 -> Installed service 'Nexus3'. // 安装成功 nexus start // 启动服务
服务启动成功后(稍等几秒),输入 http://127.0.0.1:8081/ 这里安装在本地服务器上的。能打开页面证明安装成功。
登录页面,点击右上角“Sign in” 登录,默认用户名admin,密码 admin123,登录成功后可以进行必要的一些设置。
Nexus Respository Manager设置
-
进入仓库设置页面
可以点击“Create respository” 进行自己需要的仓库,创建不同的仓库类型。
这里除了第一个maven-3rd是自己手动创建的外,其他都是默认的。
maven-central:代理第三方仓库
maven-public:仓库分组
maven-releases:放置Release版本的仓库
maven-snapshots: 放置快照版本的仓库(非稳定版)
字段属性说明:
Name:仓库名称
-
Type:仓库类型
hosted:存储本地上传的组件和资源
proxy:代理第三方仓库
group:包含多个proxy仓库和hosted仓库,在项目中一般引入这种类型的仓库就可以下载到proxy和hosted中的包
Format:仓库存储的格式,如maven2表示maven工具管理包,nuget为asp.net 的nuget组件管理包。
-
设置第三方代理使用阿里云仓库
因为国外网站很多不能直接访问或访问很慢,这里需要把mavan仓库设置成国内阿里云(http://maven.aliyun.com/nexus/content/groups/public/)的,能很好的提供拉取速度。
修改“maven-central”仓库(proxy类型的)
保存即可
-
资源库设置
设置分组类型,进入仓库“maven-public”,把其他仓库的放在该分组里,提供统一下载入口。
这里选择把建立的 maven 仓库都设置在此分组里。
使用Nexus Respository Manager下载依赖包
在maven setting文件里设置,找到<mirrors>节点,在里面添加setting.xml默认地址为:C:\Users\用户名\.m2\settings.xml,repository地址也建议新建地址
<mirror>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://127.0.0.1:8081/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
设置完成后,在IDEA 编辑器中设置配置文件路径
也可把setting.xml重新定义了路径地址。
URL设置成搭建的私有库,首先会去拉取私有库的,如私有库没有,会去拉取设置的第三方代理库maven-central并存储在私有库。这里的URL是“maven-public”分组仓库的地址。
使用Nexus Respository Manager上传依赖包
一般在用到我们自己写的组件时,上传到私有仓库里管理,能很好的进行升级更新操作。这里主要上传到maven-releases和maven-snapshots两个仓库里
-
配置仓库用户名密码,同样在C:\Users\用户名\.m2\settings.xml中配置,找到<servers>节点,这里添加两个仓库的
<server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server>
-
设置了仓库使用的用户名密码则需要在项目pom.xml中配置对应的分发路径
<distributionManagement> <repository> <id>nexus-releases</id> <name>Releases Repository of SLWY</name> <url>http://127.0.0.1:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <name>Snapshots Repository of SLWY</name> <url>http://127.0.0.1:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
注意: servier.id要与distributionManagement.repository.id两个保持一致
-
服务密码及路径设置好了,则可以使用mvn deploy发布到私有库中,在发布之前需检查设置pom.xml中的以下几点
<groupId>com.domain</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging>
如要发布正式版则需去掉<version>中的-SNAPSHOT,发布时会自动根据-SNAPSHOT来区分是否快照版本。
依赖引入跟引入其他第三方包方式一致。如下图引入的demo包
设置完成后
也可以使用命令发布
~~~
mvn deploy
~~~
发布成功后,可以在管理网站查询到该资源依赖包,同样从阿里云拉取的第三方也能在这里搜索到。
如要设置npm私有库,只需添加npm相关即可,步骤类似。