发布时间:2022-02-15源自:网络整理作者:传奇小飞侠阅读(220)
贵公司使用的Maven私服是这样搭建的
几乎所有 Java 开发人员都应该使用过 Maven。如果您还没有使用过它,那么您可能正在使用 Gradle。如果两个都没用过,就有点不正常了。顺便说一句,在 Gradle 眼里,Maven 是垃圾。
Maven作为Java项目管理工具,不仅可以用于包管理,还有很多插件好私服发布网,可以支持整个项目的开发、打包、测试、部署等一系列行为。
而包管理是它的核心功能。除非是个人项目,我们从中央仓库或者github获取包,但是对于企业项目,为了提供高速度,我们通常会在公司内部或者团队内部搭建私有的Maven仓库。
为什么要建私服
当我们在pom文件中依赖某个包时,如果没有做特殊配置(即使用maven的默认配置),maven会先去本地仓库查找。如果本地仓库没有这个依赖包,就会从中央仓库获取。默认中心仓库地址为服务器在国外。可以想象,速度无法保证。有时候运气不好,晚上拉下一个开源项目,执行maven包安装,早上起来看看,还没下载,你不生气。
当然国内也有相应的仓库,比如阿里的,速度还是很不错的。
但一般来说,公司甚至团队都会搭建一个Maven私服,这样可以保证稳定性。此外,例如公司内部的一些基础包或者项目的通行证工具包也可以放在上面。这增加了项目开发的灵活性。
例如,该公司有一个低级工具包。如果没有私人服务器,我们得到这个包。要将其安装在本地仓库中,我们需要执行以下命令:
mvn install:安装文件
-Dfile=common-util-0.0.1-SNAPSHOT.jar
-DgroupId=com.kite
-DartifactId=common-util
-Dversion=0.0.1-SNAPSHOT
-D包装=罐子
一旦修改完毕,需要在本地重新执行命令,是不是很麻烦?
私服搭建流程
Nexus 用于构建 Maven 私有服务器。可以说是最好的免费工具。其官网称:“世界上第一个也是唯一的免费仓库解决方案”。当前最新版本是OSS 3.x。提供适用于 Windows、Unix 和 OS X 的版本。
这里只是简单介绍一下Linux下的安装方法。如果是下载的最新版本,对系统内存和jdk版本有要求。内存要求大于4G,最低jdk版本为1.8。
下载包,解压,运行命令
tar -zxvf nexus-version-unix.tar.gz
进入nexus-version/bin/``目录,执行命令./nexus start`
访问默认端口 8081
是的,就是这么简单。
一般情况下,通过以上三步即可完成安装。如果有问题,提示“NOT RECOMMENDED TO RUN AS ROOT”,可以修改/bin/nexus文件,添加RUN_AS_USER=root,然后重启。
另外,如果是docker环境,可以直接获取nexus镜像完成安装。比如我直接在mac上搜索nexus,然后下载启动。
了解 Nexus
当我们通过地址访问浏览器上的nexus主页时,如下图所示:
默认帐户名为 admin,密码为 admin123。登录后,管理员可以在设置页面管理角色、用户等一系列操作。比如创建一个角色,给这个角色设置一个仓库的管理权限,然后给这个角色加人。具体操作就不过多介绍了,一看就懂。
管理员也可以管理存储库,但一般来说,默认存储库就足够了。默认情况下有以下存储库:
几种类型是什么意思
proxy:这是一种代理方法,用于代理中央仓库。比如我们所依赖的包不在本地仓库,就会从私服获取。如果私服不可用,会先从中心仓库下载包,再下载。到当地仓库;
Hosted:是指我们公司或团队的内部包,hosted类型的仓库会分为releases和snapshot。前者为正式版,后者一般为开发和测试版;
group:它的目的是组合多个仓库,然后我们只需要在我们的项目中配置这个类型的仓库地址,就可以关联到里面组合的几个仓库。
在项目中使用
获取依赖项
如果你是普通项目成员,不需要将包发布到私服,只需要在pom文件中添加如下配置即可。
maven-public
maven-public
:32768/repository/maven-public/
真的
id要和你的仓库名一样,url是私服的仓库地址,就是类型为group的私服,结合了一个代理类型和两个托管类型的仓库。将snapshots的enabled设置为true,表示允许下载snapshots版本的包。
发布(部署)包
如果你需要发布一个包到仓库,你必须首先有仓库的权限。未经许可的用户不得发布。
打开maven配置文件setting.xml,找到servers节点,添加server节点。
用户名和密码也可以是管理员账号,也可以是管理员新创建的账号,只要药厂有权限加仓即可。
关系发布
行政
管理员123
关系快照
行政
管理员123
注意上面的id,后面会在pom文件中用到。
然后需要在pom文件中配置如下:
关系发布
Maven 发布
:8081/repository/maven-releases/
关系快照
maven 快照
:8081/repository/maven-snapshots/
我们看到配置了一个repository,还有一个snapshotRepository,代表releases版本。另外注意id必须和setting.xml中服务器下的id一致,否则会出现权限问题。url 分别指定 maven-releases 和 maven-snapshots 的地址。
只要在项目中配置了1.0-SNAPSHOT,有SNAPSHOT的会去snapshots仓库,如果没有添加SNAPSHOT,就会去releases仓库。
还需要注意的是,你要发布的包不应该是父包,即不能有父依赖。否则在获取依赖时会出现问题。
最后,执行 mvn clean deploy 命令将包发布到私有服务器仓库。
通过以上的配置和操作,就可以完成包发布过程了。
最后
如果你的团队使用自己的私有服务器仓库,基本上是一样的。如果在使用过程中出现问题,可以怀疑私服坏了。比如我们团队使用的Maven私服已经挂了。
欢迎分享转载→ http://www.weitianda.com.cn/youxifb/790.html