去nexus官网下载最新的nexus3版本,地址:
nexus官方下载地址
不需要下载到自己的客户机上,直接在服务器里面用wget下载更快
nexus需要验证
cd /home/download
wget https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.14.0-04-unix.tar.gz
tar -zxvf nexus-3.14.0-04-unix.tar.gz
mv nexus-3.14.0-04 /usr/local/nexus3
[root@localhost etc]# firewall-cmd --zone=public --add-port=8081/tcp --permanent
[root@localhost etc]# firewall-cmd --reload
cd /usr/local/nexus3
./bin/nexus start
http://serveraddress:8081
默认账户密码:
admin/admin123
点击Nexus“Log in”,输入默认用户名(admin)和默认密码(admin123)登录。可以点击上面的“设置”图标,在“设置”里可以添加用户、角色,对接LDAP等的设置
nexus里可以配置3种类型的仓库,分别是proxy、hosted、group
proxy是远程仓库的代理。比如说在nexus中配置了一个central repository的proxy,当用户向这个proxy请求一个artifact,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用
hosted是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,ojdbc6.jar,在central repository是获取不到的,就需要手工上传到hosted里
group是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了
仓库访问地址填阿里云的仓库
http://maven.aliyun.com/nexus/content/groups/public/
他不是一次性将镜像仓库中的所有jar包都下到我们的nexus中存储,而是我们用到的时候,从阿里云镜像中下载,然后存在nexus中,下次就不用再去阿里云下载了。
测试:
修改maven的settings配置文件,配置镜像仓库和密码,不去默认的官方的中央仓库下载jar包
<servers>
<server>
<id>releasesid>
<username>adminusername>
<password>*****password>
server>
<server>
<id>snapshotsid>
<username>adminusername>
<password>*****password>
server>
servers>
<mirrors>
<mirror>
<id>nexusid>
<mirrorOf>*mirrorOf>
<url>http://nexus.*.top/repository/qinhe_maven_proxy/url>
mirror>
mirrors>
在一个maven项目中配置Maven的settings为我们修改过的配置文件,然后随便找一个maven的jar包
如下:
<dependency>
<groupId>com.twittergroupId>
<artifactId>util-hashing_2.12artifactId>
<version>18.10.0version>
dependency>
或者不用修改settings,直接在项目中pom修改
<repositories>
<repository>
<id>publicid>
<name>publicname>
<url>http://nexus.*.top/repository/qinhe_maven_proxy/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
repository>
repositories>
用于jar包上传的私有仓库:host
配置如下:
RELEASE仓库:
配置pom文件即可
3、配置私服,即
maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版 本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)。release版本不允许修改,每次进行release版本修改,发布必须提升版本号。而snapshot一般是开发过程中的迭代版本,snapshot更新后,引用的项目可以不修改版本号自动下载构建。
我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的。如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不 符合要求和实际情况了。但是,如果是基于快照版本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。
maven2会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。如果是快照版本,那么在 mvn deploy时会自动发布到快照版本库中,而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。如果是正式发布版本,那么在mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务 器上下载。
所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发,也不冲突MAVEN的版本管理原则。例如:
com.xxx.yyy
xxxxxxx
1.0-SNAPSHOT
这里我们使用 IDEA 新建一个 Maven Project,命名为 utils,并在其中新建一个类,供我们后续测试使用。
配置 pom.xml:
<distributionManagement>
<repository>
<id>releasesid>
<url>http://192.168.2.20:8081/repository/qinhe_maven/url>
repository>
<snapshotRepository>
<id>snapshotsid>
<url>http://192.168.2.20:8081/repository/qinhe_maven/url>
snapshotRepository>
distributionManagement>
配置maven的 settings.xml:
<servers>
<server>
<id>releasesid>
<username>userusername>
<password>123456password>
server>
<server>
<id>Snapshotsid>
<username>userusername>
<password>123456password>
server>
servers>
当私服里面没有这个jar包的时候才回去我们配置的镜像代理仓库中下载jar包
创建一个group仓库,把我们的镜像仓库、host仓库都加进去
在 settings.xml 中添加如下配置即可:
<profiles>
<profile>
<id>nexus_qinheid>
<repositories>
<repository>
<id>nexus_publicid>
<url>http://****/repository/qinhe_maven_group/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus_publicid>
<url>http://****/repository/qinhe_maven_group/url>
<releases>
<enabled>trueenabled>
releases>
<snapshots>
<enabled>trueenabled>
snapshots>
pluginRepository>
pluginRepositories>
profile>
profiles>
<activeProfiles>
<activeProfile>nexus_qinheactiveProfile>
activeProfiles>