Maven的简单介绍、centos7搭建nexus2私服
目录
前言
什么是maven
很方便的使用依赖包(构件)
Maven构建大型项目
Maven生命周期
网络姿势
本地仓库、远程仓库(私服仓库,中央仓库,第三方仓库)的区别
settings.xml配置文件
私服搭建
nexus下载,上传,解压缩
修改运行文件
修改配置文件
启动nexus服务 ./nexus start
浏览器无法访问私服?
私服仓库介绍
仓库类型
常用仓库
Maven向私服下载构件
配置私服仓库地址
激活profile ,才能使配置生效
使用maven打包发布到私服
在maven配置文件settings.xml的servers配置私服的认证。
在maven项目的POM配置发布地址
以前没使用maven那会,开发项目都是网上导出找jar包,什么官方下载,没镜像的中央仓库(网速差的两批),别人共享的百度云,CSDN的收费资源等等,各种手段也是收集了一堆jar。然鹅开发有时还是会有jar包冲突,版本不对等等情况,着实让人烦躁。
使用maven 的好处有:节省外网宽带,都是内网的仓库;加速maven工程构建,内网速度快;部署获取第三方构件,还有部署公用jar包业务包等。
需求促进市场,maven自然就有大佬研发出来了。与其说是一种技术,不如说是一种理念和思维一种解决问题的方式,maven就是一种具体的实现和完善。
Maven是一套项目管理工具,比如jar包的统一管理,构建应用工程的编译打包部署,还可以开发自定义插件,来方便自己的习惯操作。
使用POM文件来管理项目依赖的jar包,通过GAV来定位一个jar,安装完maven配置一下,使用的时候它就会自动帮你下载jar包,你只需要给他一个GAV。
解决项目间的依赖关系,比如项目A需要项目B的一个功能类,只需要在A项目的POM中通过GAV引入即可引用B项目的功能,打包的时候它自动会帮你把项目B的jar包弄进去。
在创建一个大型项目的时候,可以通过maven将项目分割成几个子模块(项目),比如一个电商项目==》订单管理系统,支付管理系统,用户管理,公共类,然后创建一个类型为POM的父类,使用modules标签来包裹几个子模块,父类只负责统一构件的版本号(spring、jdk、tomcat、编码和一些公共的构件包)。
Maven 的生命周期符合大部分软件工程的构建过程,使用maven执行项目构建的时候,按照:clean、compile、test、package、install、deploy,当然这只是其中一些主要的命令,它实际执行还包括一些预清理 后清理 预编译 校验等等操作。
Maven的创始人是Jason Van Zyl,诞生时间大概在2001年3月。Maven起源于Jakarta Alexandria项目,在2002年10月份左右Maven迁移到Turbine项目中继续发展,
最后是被纳入阿帕奇(Apache)的一个开源项目,供开发者免费下载使用。
主要介绍下3个标签,server、mirror、repository
有以下规则:
我这里建立了一个软连接nexus方便使用,对应的是安装目录nexus-2.14.5-02
在安装目录里的bin目录下编辑nexus文件 vi nexus,将运行用户改为root,RUN_AS_USER=root,安装路径改为你自己的NEXUS_HOME=””。
在conf目录vi nexus.properties 可以修改默认端口,工作目录一般不用改。改完保存退出。
相关的命令: ./nexus {start|stop|run|run-redirect|status|restart|force-reload},这里start和run都是启动命令。start是后台启动,可以挂到后台运行,run是实时启动的可以看到启动日志。
服务状态可以执行./nexus status查看是否启动成功,然后浏览器打开http://11.11.11.11:8081/nexus 你的服务器ip加默认端口8081,默认登录账号密码admin/admin123
1. 查看防火墙是否开启了,firewalld和iptables二者都属于防火墙管理规则,可以先查看两者是否都开启了,再单个排查
编辑开放端口号文件:vi /etc/sysconfig/iptables
添加允许端口: -A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
保存:service iptables save
重启:service iptables restart
2. 检查阿里云服务器是否已经把8081端口加入安全组(入口)
点击左边Repository仓库,可以看到右边已有的仓库
将多个仓库组合起来一起使用,只需引入一个仓库组地址即可享用多个仓库资源。左边是已加的仓库,右边是可用仓库(需要就把右边-挪到-左边 )
仓库配置记得将Deployment Policy设置为Allow Redeploy不然会部署失败
以上仓库如果不够用,可以自己新建仓库,同样可以新建用户、角色和权限。管理员给用户配置角色,角色可以添加权限,权限就跟仓库挂钩。这样就可以指定用户可以部署到哪些仓库,这个一般中小公司用不到,有兴趣自己可以尝试一波。
其实也就是将私服仓库配置到本地的repository,当项目在本地仓库找不到构件就会从私服搜索下载,然后放到本地仓库缓存起来,以便项目打包时使用。在settings.xml文件找到profile部分配置
nexus-public
Nexus
http://11.11.11.11:8081/nexus/content/groups/public
true
true
我这里是配置了仓库组。
nexus-public
在maven的settings.xml文件,对应位置添加即可
事实上,只要你的私服搭建完毕,maven也配置好了,只需要做下面两件事就可以发布jar到私服上。
用户名和密码就是nexus 里面配置账号密码,id 自定义,在pom 里面会引用此处的id 进而通过此处用户名和密码连接远程仓库。admin密码默认admin123(建议先修改密码),一般都是上传包需要校验,下载不用。
maven-releases
admin
admin123
maven-snapshots
admin
admin123
这里是配置了快照版本和发布版本两个校验,实际开发中这两个的账号密码应该不同。
maven-releases
maven-public1
http://11.11.11.11:8081/nexus/content/repositories/releases/
maven-snapshots
maven-snapshots
http://11.11.11.11:8081/nexus/content/repositories/snapshots/
注意这里的ip和端口改为你私服的ip端口,id要和settings.xml文件里面server的id相同才能匹配和校验成功。
通过上面的配置,就可以发布构件到你的私服了。执行maven命令 mvn clean deploy 即可。如果你项目版本是快照版本(如下图version后缀带 -SNAPSHOT),就会发布到快照仓库下。否则一律视为正式版本。
快照仓库
maven 打包代码到私服根据version 后面是否带有“-SNAPSHOTS” 来区分是打包线上版本还是快照版本,如果带有“-SNAPSHOTS” 打包快照版本,否则即为线上版本。发布地址分别对应快照仓库snapshots和正式仓库releases。