dockers安装很方便,但是有时候我们不可以选择docker安装的时候,就手动安装吧。
一、安装JDK
参考:https://www.jiguiquan.com/?p=273
二、安装MAVEN
参考:https://www.jiguiquan.com/?p=273
三、下载安装Nexus3
1、下载最新Nexus3安装包
https://my.sonatype.com/ 在 Latest Releases 标签下, 下载最新nexus repository安装包
2、解压到 /usr/local/nexus/ 目录下
tar -zxvf nexus-3.37.3-02-unix.tar.gz [root@tcosmo-szls01 nexus]# pwd /usr/local/nexus # 解压完会有两个目录: [root@tcosmo-szls01 nexus]# ll total 0 drwxr-xr-x. 10 root root 181 Jan 26 11:08 nexus-3.37.3-02 ## 包含了 Nexus 运行所需要的文件。是 Nexus 运行必须的 drwxr-xr-x. 3 root root 20 Jan 26 11:08 sonatype-work ## 包含了 Nexus 生成的配置文件、日志文件、仓库文件等。当我们需要备份 Nexus 的时候默认备份此目录即可
3、配置环境变量,并使其生效
[root@tcosmo-szls01 nexus]# vim /etc/profile export NEXUS_HOME=/usr/local/nexus/nexus-3.37.3-02 export PATH=$PATH:$NEXUS_HOME/bin [root@tcosmo-szls01 nexus]# source /etc/profile [root@tcosmo-szls01 nexus]# nexus -version WARNING: ************************************************************ WARNING: Detected execution as "root" user. This is NOT recommended! WARNING: ************************************************************ Usage: /usr/local/nexus/nexus-3.37.3-02/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}
4、修改默认启动用户
vim /usr/local/nexus/nexus-3.37.3-02/bin/nexus.rc run_as_user="root" #内容就这一行,放开注释,填写用户即可
5、修改启动端口
vim /usr/local/nexus/nexus-3.37.3-02/etc/nexus-default.properties #默认就是8081,可以不修改
6、启动nexus并查看运行状态
[root@tcosmo-szls01 nexus]# nexus start WARNING: ************************************************************ WARNING: Detected execution as "root" user. This is NOT recommended! WARNING: ************************************************************ Starting nexus [root@tcosmo-szls01 nexus]# nexus status WARNING: ************************************************************ WARNING: Detected execution as "root" user. This is NOT recommended! WARNING: ************************************************************ nexus is running.
7、访问系统
访问http://ip:8081,登陆用户admin 密码存放在:/usr/local/nexus/sonatype-work/nexus3/admin.password 目录 [root@tcosmo-szls01 nexus]# cat /usr/local/nexus/sonatype-work/nexus3/admin.password easdsccc-64ab-45c4-9d8a-abh******jfe19
8、配置nexus开机自启动
vim /etc/rc.d/rc.local /usr/local/nexus/nexus-3.18.1/bin/nexus start #添加这一行内容 chmod 755 /etc/rc.d/rc.local
四、Nexus3的使用
1、在mvn配置中添加nexus的认证信息
<server> <id>mynexus-releases</id> <username>admin</username> <password>******</password> </server> <server> <id>mynexus-snapshots</id> <username>admin</username> <password>******</password> </server>
2、在项目的pom.xml中添加nexus的仓库地址
(如果是多module应用,可以直接在父pom里面配置)
<distributionManagement> <repository> <id>mynexus-releases</id> <name>maven-releases</name> <url>http://10.206.73.157:8081/repository/maven-releases/</url> </repository> <snapshotRepository> <id>mynexus-snapshots</id> <name>maven-snapshots</name> <url>http://10.206.73.157:8081/repository/maven-snapshots/</url> </snapshotRepository> </distributionManagement>
3、执行deploy命令,完成打包与推送
mvn clean deploy # 如果像强行要求使用者更新本地依赖,可以 -U
4、现在可以在maven-public中查看到我们推送的jar包
5、在Maven项目中的使用
-
如果我们只有个别依赖需要从我们自己的nexus下载,那么只需要在项目的pom.xml文件中进行配置即可:
<repositories> <repository> <id>releases</id> <name>maven-public</name> <url>http://10.206.73.157:8081/repository/maven-public/</url> </repository> </repositories>
-
如果我们有很多依赖都需要从我们自己的nexus下载,那么可以通过修改maven的配置文件,setting.xml增加镜像来实现;
<mirror> <id>myNexus</id> <mirrorOf>*</mirrorOf> <name>myNexus</name> <url>http://10.206.73.157:8081/repository/maven-public/</url> </mirror>
但是,需要注意的是:
当maven的版本高于3.6之后,我们在项目pom.xml中是没有办法使用http协议的仓库地址的,会报错:
maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories
此时,我们要么使用https协议的仓库地址,要么在maven的setting.xml中进行配置;
当maven的配置setting.xml中配置了多个mirror镜像的时候,是没有办法同时生效,依次检查的,只有第一个会生效;
这很尴尬,因为我们一般会喜欢在setting.xml中配置阿里云的镜像仓库,不像完全替换成我们自己的。
补充1:Nexus中默认的那些仓库分别是什么作用,有什么区别?
Type类型的理解:
-
proxy:是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用。
-
Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里,一般用来存放公司自己的jar包;
-
Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了右边那个Repository Path可以点击进去,看到仓库中artifact列表。不过要注意浏览器缓存,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。
四大仓库的理解:
-
maven-central:代理仓库,使用了proxy模式;
-
maven-release:用来存放release版本的jar包;(我上面就是推送到了release库里面)
-
maven-snapshot:用来存放snapshot版本的jar包;
-
maven-public:maven-central、maven-release和maven-snapshot三个库的合集,对外使用,只要提供这一个group的地址即可。
补充二:文件描述符Ulimit问题修复
vim /etc/security/limits.conf # 添加以下内容(如果我们是root用户启动的话): @root - nofile 65536 ## 保存后重启系统: reboot
之后,此问题即可被修复!