Maven 私服 Nexus3 [ 福利:当当优惠码 ]

优惠码:PX3RVM 300减60      Z4JUCB 20030

1、Maven和Nexus3 简介

Maven是一个采用纯Java编写的开源项目管理工具

采用一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。

目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在学习如何在不同的环境中去依赖jar包,项目部署等。

Maven和ant都是软件构建工具(软件管理工具),Maven比Ant更加强大,已经取代了ant,jar包的声明式依赖描述。Maven有jar包的仓库。

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。

  

公司如果没有maven私服,则需要用手动打jar包的方式添加依赖

2、安装 Maven

1、下载 maven
[root@qfedu.com ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
2、解压安装
[root@qfedu.com ~]# tar xf apache-maven-3.5.4-bin.tar.gz -C /usr/local/
[root@qfedu.com ~]# cd /usr/local/
[root@qfedu.com ~]# ln -s apache-maven-3.5.4/ maven
3、安装 java 环境
[root@qfedu.com ~]# tar xf jdk-8u201-linux-x64.tar.gz -C /usr/local/
[root@qfedu.com ~]# cd /usr/local/
[root@qfedu.com ~]# ln -s jdk1.8.0_201/ java
4、添加环境变量
[root@qfedu.com ~]# vim /etc/profile

添加如下内容(这里的MAVEN_HOME需要改为你自己的maven解压目录):

JAVA_HOME=/usr/local/java
export MAVEN_HOME=/usr/local/maven
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH
  • 重载环境变量

[root@qfedu.com ~]# source /etc/profile
5、验证 maven 安装

输入命令 mvn -version 看到如下内容说明安装成功了。

3、安装 nexus3

1、下载

专业版的nexus收费,下载开源版 Nexus OSS,下载地址为 https://www.sonatype.com/download-oss-sonatype

Wing下载的时候可以获取链接用迅雷下载,我是直接把https改成了http下载,下载下来的包大小不一样,我暂时使用的是小一点的120多M的安装包

2、解压
[root@qfedu.com ~]# cd /usr/local
[root@qfedu.com ~]# tar -zxf nexus-3.13.0-01-unix.tar.gz

解压后会多出两个目录,nexus-3.13.0-01和sonatype-work。

3、启动
[root@qfedu.com ~]# cd nexus-3.13.0-01/bin/
[root@qfedu.com ~]# ./nexus start

看到如图所示内容表明我们已经启动成功了,游览器输入http://localhost:8081即可访问。

注意:

启动后如果你立即访问可能发现什么都没有,不要急这个启动需要一定时间,1分钟后再尝试访问

登录

点击右上角的sign in登录,输入账户admin

密码:

# cat /root/sonatype-work/nexus3/admin.password
91c37108-809a-495b-942d-3932b9b33e04
4、仓库介绍

点击“设置-Repositories”,就可以看到仓库,分三种类型:

  • 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-public:maven-central、maven-release和maven-snapshot三个库的合集。

    maven-release:用来存放release版本的jar包。

    maven-snapshot:用来存放snapshot版本的jar包。

关于Maven的Snapshot版本与Release版本

  1. Snapshot版本代表不稳定、尚处于开发中的版本

  2. Release版本则代表稳定的版本

  3. 什么情况下该用SNAPSHOT? 协同开发时,如果A依赖构件B,由于B会更新,B应该使用SNAPSHOT来标识自己。这种做法的必要性可以反证如下:

a.如果B不用SNAPSHOT,而是每次更新后都使用一个稳定的版本,那版本号就会升得太快,每天一升e68a84e8a2ade79fa5e9819331333363396362甚至每个小时一升,这就是对版本号的滥用。

b.如果B不用SNAPSHOT,  但一直使用一个单一的Release版本号,那当B更新后,A可能并不会接受到更新。因为A所使用的repository一般不会频繁更新release版本的缓存(即本地repository),所以B以不换版本号的方式更新后,A在拿B时发现本地已有这个版本,就不会去远程Repository下载最新的B

  1. 不用Release版本,在所有地方都用SNAPSHOT版本行不行?不行。正式环境中不得使用snapshot版本的库。 比如说,今天你依赖某个snapshot版本的第三方库成功构建了自己的应用,明天再构建时可能就会失败,因为今晚第三方可能已经更新了它的snapshot库。你再次构建时,Maven会去远程repository下载snapshot的最新版本,你构建时用的库就是新的jar文件了,这时正确性就很难保证了。

5、向 nexus3 私服上传 jar 包
1、准备环境
1、创建3rd_part

使用默认用户 admin/admin123 登陆

点击左侧的repository\repositories后,在右侧点击create repository

然后选择maven2(hosted),填写如下

跳到首页后选择maven-public

3rd_part移到member中,即将3rd_partmaven-public管理,点击save

至此,创建仓库完成

2、创建 3rd_part 管理用户

创建用户: 用户名/密码-dev/dev123

2、直接浏览器

使用dev/dev123登陆,点击upload

填写上传jar包的信息后,点击upload

可以看到已经上传成功

4、常见错误

问题1:上传报错误码405,Failed to transfer file。

     解决:仔细查看报错信息就会发现,是上传的url错了,原因就是repository的地址写错了。

问题2:错误码401或者403

     解决:其实403错误就是“禁止访问”的含义,所以问题的根源肯定在授权上面。Maven在默认情况下会使用deployment帐号(默认密码deploy)登录的系统,但是关键的Nexus中Releases仓库默认的Deployment Policy是“Disable Redeploy”,所以无法部署的问题在这个地方,方法是将其修改为“Allow Redeploy”就可以了。401就是Maven settings.xml没有设置密码

喜欢,在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值