本文介绍的是nexus3.14.0版本在linux环境下安装、启动、搭建私库。
nexus3以上的版本太新了,网上很少介绍安装细节的。据了解和2.X版本有所不同了。
1、前提
linux机器上需先安装好jdk,并且配置好java环境变量。
安装好maven,并且配置好maven环境变量。
2、安装
把下载好的nexus-3.14.0-04-mac.tgz文件放到/opt/目录下。这个目录你自己可以随意定。
进入tgz文件所在目录: cd /opt/
在/opt目录下解压缩tgz文件命令: tar -zxvf nexus-3.14.0-04-mac.tgz
解压缩后当前目录出现了两个目录: nexus-3.14.0-04 和 sonatype-work,注意这个sonatype-work也是个有用的文件夹,不要删除。
3、修改配置文件
修改启动文件以root用户启动
进入安装下的bin目录: cd /opt/nexus-3.14.0-04/bin
用vim命令修改启动文件nexus: vim nexus
找到127行(如何显示行号自行百度),把原来的run_as_root=true改为false,这里我是注释掉原来那行,新增加了一行run_as_root=false,如下:
#run_as_root=true
run_as_root=false
4、启动
进入启动相关配置文件: cd /opt/nexus-3.14.0-04/etc/
然后查看配置文件:cat nexus-default.properties
应用启动端口:
application-port=8081
应用启动上下文:
nexus-context-path=/
进入bin目录,启动nexus: ./opt/nexus-3.14.0-04/bin/nexus start 注意最前面的那个点不要忽略,最后的start参数之前要有一个空格
执行start命令后,输出:Starting nexus
我本地启动大约需要30秒左右,查看nexus是否已启动命令:ps -ef|grep nexus 如果有输出则证明启动了。
验证是否启动成功,在浏览器里输入url:
http://127.0.0.1:8081/ 如果在别的机器访问,例如我这里是http://192.168.125.150:8081/ 显示不出网页,考虑可能是linux启用了防火墙,限制了端口号。
这里的url就包含了启动端口和启动上下文。
浏览器截图如下:
5、查看nexus相关配置
点击右上角的Sign in ,用户名和密码输入(默认的):admin / admin123。
点击设置按钮,再进入System Information菜单。
1、查看版本信息、节点信息、安装目录:
2、查看jdk安装目录:
3、查看maven安装目录:
4、系统运行时内存情况、线程、联网情况
其他系统信息不一一列举。
6、搭建私库3rd_part
感谢此老兄:https://blog.csdn.net/u013887008/article/details/79429973(向nexus3私服上传jar包)
使用默认的用户名和密码登录:admin / admin123。
新建仓库:3rd_part
在nexus3.X版本已经没有repository ID的概念了,所以取个name就好,配置文件需要用到repository ID的地方统统使用name就行。新建repository:
注意上图的 Release,nexus2不清楚,但是在nexus3中,这个库要区分是存放RELEASE稳定版本的,还是存储SNAPSHOT不稳定版本的。
这会影响到当你使用mvn deploy命令把本地的jar或其他maven构件上传到nexus私服时,如果你的项目打包版本例如是0.0.1-SNAPSHOT,就会说不允许上传到release稳定版本库中。
7、为新版本库3rd_part归纳到*库maven-public
当新库3rd_part创建完毕时,要把新库归纳到我们的版本库中心:maven-public,这个库是所有其他库的*库,包含了其余所有库的包,归纳操作步骤:
双击maven-public库,进入详细页:
把新建的库3rd_part点击向右箭头归纳到*库的组内来,然后点击save保存。
8、为新版本库3rd_part创建权限、角色、用户(可选)
在之前的nexus版本中,但凡创建一个新库,都要手动创建该库的权限,但是nexus3中,系统已经自动创建出了新库的所有权限nx-repository-admin-maven2-3rd_part-*
其余例如read、delete、browse等权限也都已经自动创建好了,权限细粒度还是比较好的。
接下来需手动创建角色:nx-role-3rd_part :
把nx-admin的最大角色包含进来到新角色nx-role-3rd_part ,并把新库的所有权限 nx-repository-admin-maven2-3rd_part-* 都赋予给这个角色,最后点击save保存:
创建用户部分可选,此处省略,类似以上步骤。练习用途的话直接使用admin/admin123即可。如果需要创建用户,务必把roles角色赋予给这个用户。
9、maven的setting.xml配置
配置你访问某个repository仓库用哪个用户名和密码,如果你有多个仓库,对应不同项目上传的私服repository地址,则需要在这里配置多个server标签,在<servers>中添加:
<server>
<id>3rd_part</id> <!-- 注意这里的id一定要和你项目中的私服地址id一模一样,如果这里的用户名密码写错了,会报错:会报错401, ReasonPhrase: Unauthorized. -->
<username>admin</username>
<password>admin123</password>
</server>
配置你的私服地址,在<mirrors>中添加,
<mirror>
<!--此处配置所有的构建均从私有仓库中下载 *代表所有,也可以写central -->
<id>nexus3</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.125.150:8081/repository/maven-public/</url>
</mirror>
在<profiles>中添加:
<profile>
<id>nexus3</id>
<repositories>
<repository>
<id>maven-public</id> <!-- 1111, 这里的id需和2222那里的一样,在同一个profile里 -->
<url>http://192.168.125.150:8081/repository/maven-public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories> <!-- 这里是插件仓库地址 -->
<pluginRepository>
<id>maven-public</id> <!-- 2222, 这里的id需和1111那里的一样,在同一个profile里 -->
<url>http://192.168.125.150:8081/repository/maven-public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
启用id为nexus3的profile的配置:
<activeProfiles>
<activeProfile>nexus3</activeProfile>
</activeProfiles>
10、项目私服配置
在<project>标签下添加distributionManagement标签,这个标签应该和<groupId><artifactId>这些标签是同级的:
<!-- 这个配置是上传到私服的配置 -->
<distributionManagement>
<repository>
<!-- 上传到私服的仓库id。注意:nexus3里没有了repository id的概念,直接使用name作为id的值即可,也可以起一个另外的有意义的名字。
但是!!此id的值必须与setting.xml里server标签里的其中一个id相同,server里配置的用户名和密码才能对这个私库起作用,否则,会报错401, ReasonPhrase: Unauthorized.
-->
<id>3rd_part</id>
<!-- 上传到私服的仓库name -->
<name>3rd_part</name>
<!-- 一般项目都是上传到自己的项目私库,每个项目的私库应该分开,尤其是微服务项目。同一个微服务项目下的各个子项目应该被放在同一个私库。 -->
<url>http://192.168.125.150:8081/repository/3rd_part/</url>
</repository>
</distributionManagement>
注意:nexus3里没有了repository id的概念,直接使用name作为id的值即可,也可以起一个另外的有意义的名字。
11、上传jar、war到私服
打开cmd,到项目根目录下,按照以下步骤执行maven命令:
mvn clean //清空target目录
mvn install //打包项目到target目录
mvn package //打包项目并且将包同步到本地maven库
mvn deploy //将打包好的包同步上传到私库,deploy命令发布成功截图如下:
注意,如果你mvn deploy执行的是父类项目,也就是这个项目中的pom.xml中有以下标签的项目:
<modules>
<module>../project1</module>
<module>../project2</module>
</modules>
那么就会把project1和project2都upload上传到nexus私服。
12、验证上传到私库的包
在3rd_part私库中,确实找到了上传的jar包:
13、上传包的存放地址
感谢这位老兄:https://www.cnblogs.com/acm-bingzi/p/mavenNexusPath.html (maven上传jar包到nexus私服后的存放路径 以及 使用IDEA上传jar包的步骤)
上图中可以看到以.jar命名的文件,也可以下载。
这让我一度以为是以jar包的形式保存在本地,但事实证明,保存在本地的最终是一个 .bytes 类型的文件,它的默认路径在\sonatype-work\nexus3\blobs\default\content下面以.bytes的文件存在:
注意这个sonatype-work的文件夹在nexus3.14版本中是和nexus-3.14.0-04文件夹同处于一个文件夹下的同一层级。
在tar -zxvf命令解压缩nexus3.14.tar.gz文件时,自动解压出两个文件夹:sonatype-work 、nexus-3.14.0-04