maven简介和nexus私服安装

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就是一种具体的实现和完善。

Maven是一套项目管理工具,比如jar包的统一管理,构建应用工程的编译打包部署,还可以开发自定义插件,来方便自己的习惯操作。

很方便的使用依赖包(构件)

使用POM文件来管理项目依赖的jar包,通过GAV来定位一个jar,安装完maven配置一下,使用的时候它就会自动帮你下载jar包,你只需要给他一个GAV。

解决项目间的依赖关系,比如项目A需要项目B的一个功能类,只需要在A项目的POM中通过GAV引入即可引用B项目的功能,打包的时候它自动会帮你把项目B的jar包弄进去。

Maven构建大型项目

在创建一个大型项目的时候,可以通过maven将项目分割成几个子模块(项目),比如一个电商项目==》订单管理系统,支付管理系统,用户管理,公共类,然后创建一个类型为POM的父类,使用modules标签来包裹几个子模块,父类只负责统一构件的版本号(spring、jdk、tomcat、编码和一些公共的构件包)。

Maven生命周期

Maven 的生命周期符合大部分软件工程的构建过程,使用maven执行项目构建的时候,按照:clean、compile、test、package、install、deploy,当然这只是其中一些主要的命令,它实际执行还包括一些预清理 后清理 预编译 校验等等操作。

  • Clean清除上一次构建项目生成的文件
  • Compile编译项目
  • Test执行测试单元的代码
  • Package打包,这个是会把项目打jar/war/pom包放到你项目的target目录下(默认)
  • Install安装,这个会把你打的包放到你本地的仓库中,安装maven后可以在settings.xml文件中修改本地仓库目录(默认${user.home}/.m2/repository )
  • Deploy发布,将打包好的构件(jar包 war包等)发布到远程仓库,这个需要配置,下面会讲。

网络姿势

Maven的创始人是Jason Van Zyl,诞生时间大概在2001年3月。Maven起源于Jakarta Alexandria项目,在2002年10月份左右Maven迁移到Turbine项目中继续发展,

最后是被纳入阿帕奇(Apache)的一个开源项目,供开发者免费下载使用。

本地仓库、远程仓库(私服仓库,中央仓库,第三方仓库)的区别

  • 本地仓库,就是你安装完默认的一个目录,默认${user.home}/.m2/repository(我的windows就是C:\Users\DELL\.m2\repository)
  • 私服仓库,就是你自己的服务器搭建的仓库(你也可以在你电脑用nexus装一个私服),一般公司的私服都是在自己内网,开发人员把公共的jar包放到私服来共用。
  • 中央仓库,maven默认使用的远程仓库,具有权威性的,地址在国外所以有时候很慢(使用阿里云镜像来解决)
  • 第三方仓库,就是别人的私服,在你这里就是第三方仓库。同样道理,你的私服也是别人的第三方仓库。

settings.xml配置文件

主要介绍下3个标签,server、mirror、repository

  • server,用于配置私服的认证信息,参考第8点,用于发布构件到私服。
  • mirror,仓库的镜像映射,基于规则对仓库repository进行匹配覆盖。
  • repository,远程仓库配置,方便我们从私服下载构件。

有以下规则:

  1. 在mirrorOf与repository的id相同的时候优先是使用mirror的地址
  2. mirrorOf等于*的时候覆盖所有repository配置
  3. 存在多个mirror配置的时候mirrorOf为*的放到最后
  4. 只配置mirrorOf为central的时候可以不用配置repository(默认覆盖中央仓库)
  5. repositories标签下可以配置多个repository,如果我们配置了多个repository,maven会用哪个呢,答案是按出现顺序使用,如果第1个可用,就用第一个,如果不可用,就依次往下找。

私服搭建

nexus下载,上传,解压缩

  • 地址:Nexus Repository OSS - Software Component Management | Sonatype(反正我是打不开,用的别人网盘下的)不过内容配置啥的都差不多。建议使用nexus3版本的;
  • 将压缩包nexus-2.14.4-03-bundle.tar.gz上传到linux服务器;
  • 我这里是解压到/usr/local 目录下tar -zxvf nexus-2.14.4-03-bundle.tar.gz -C /usr/local

我这里建立了一个软连接nexus方便使用,对应的是安装目录nexus-2.14.5-02

maven简介和nexus私服安装_第1张图片

修改运行文件

在安装目录里的bin目录下编辑nexus文件 vi nexus,将运行用户改为root,RUN_AS_USER=root,安装路径改为你自己的NEXUS_HOME=””。

maven简介和nexus私服安装_第2张图片

修改配置文件

在conf目录vi nexus.properties 可以修改默认端口,工作目录一般不用改。改完保存退出。

maven简介和nexus私服安装_第3张图片

启动nexus服务 ./nexus start

相关的命令: ./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二者都属于防火墙管理规则,可以先查看两者是否都开启了,再单个排查

  • 检查firewalld:参考https://www.cnblogs.com/qingchengshiguang/p/12101990.html
  • 检查iptables是否开启了端口限制,状态:service iptables status

编辑开放端口号文件: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端口加入安全组(入口)

maven简介和nexus私服安装_第4张图片

私服仓库介绍

点击左边Repository仓库,可以看到右边已有的仓库

maven简介和nexus私服安装_第5张图片

仓库类型

  • hosted本地仓库,通常我们只能将本地构件包部署到这一类型仓库
  • proxy: 代理仓库,用来代理远程公共仓库,如maven中央仓库
  • group: 仓库组,是多个仓库的集合,当我们的依赖在多个仓库时只需要将多个仓库配置到仓库组,然后在本地maven的repository配置这个仓库组的地址即可,而不需要同时写多个repository

常用仓库

  • Public Repositories仓库组

将多个仓库组合起来一起使用,只需引入一个仓库组地址即可享用多个仓库资源。左边是已加的仓库,右边是可用仓库(需要就把右边-挪到-左边 )

maven简介和nexus私服安装_第6张图片

  • 3rd party:第三方仓库,一般用于中央仓库找不到的依赖或公用的依赖包。
  • release:发布仓库,通常用于部署稳定版本的依赖构件,生产环境使用。
  • snapshots:快照仓库,通常用于开发测试时部署使用,版本更新较快。

仓库配置记得将Deployment Policy设置为Allow Redeploy不然会部署失败

maven简介和nexus私服安装_第7张图片

以上仓库如果不够用,可以自己新建仓库,同样可以新建用户、角色和权限。管理员给用户配置角色,角色可以添加权限,权限就跟仓库挂钩。这样就可以指定用户可以部署到哪些仓库,这个一般中小公司用不到,有兴趣自己可以尝试一波。 

Maven向私服下载构件

其实也就是将私服仓库配置到本地的repository,当项目在本地仓库找不到构件就会从私服搜索下载,然后放到本地仓库缓存起来,以便项目打包时使用。在settings.xml文件找到profile部分配置

配置私服仓库地址



  nexus-public

  


  

    Nexus
    
    http://11.11.11.11:8081/nexus/content/groups/public

    
    true
    

    
    true
    

  

  

  

我这里是配置了仓库组。

激活profile ,才能使配置生效



nexus-public

在maven的settings.xml文件,对应位置添加即可

使用maven打包发布到私服

事实上,只要你的私服搭建完毕,maven也配置好了,只需要做下面两件事就可以发布jar到私服上。

在maven配置文件settings.xml的servers配置私服的认证。

用户名和密码就是nexus 里面配置账号密码,id 自定义,在pom 里面会引用此处的id 进而通过此处用户名和密码连接远程仓库。admin密码默认admin123(建议先修改密码),一般都是上传包需要校验,下载不用。



    
    
    maven-releases
    admin
    admin123




    
    maven-snapshots
    admin
    admin123

    

maven简介和nexus私服安装_第8张图片

这里是配置了快照版本和发布版本两个校验,实际开发中这两个的账号密码应该不同。 

在maven项目的POM配置发布地址




    
    

        
        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/

     

maven简介和nexus私服安装_第9张图片

注意这里的ip和端口改为你私服的ip端口,id要和settings.xml文件里面server的id相同才能匹配和校验成功。

通过上面的配置,就可以发布构件到你的私服了。执行maven命令 mvn clean deploy 即可。如果你项目版本是快照版本(如下图version后缀带 -SNAPSHOT),就会发布到快照仓库下。否则一律视为正式版本。

maven简介和nexus私服安装_第10张图片

快照仓库

maven简介和nexus私服安装_第11张图片

maven 打包代码到私服根据version 后面是否带有“-SNAPSHOTS” 来区分是打包线上版本还是快照版本,如果带有“-SNAPSHOTS”  打包快照版本,否则即为线上版本。发布地址分别对应快照仓库snapshots和正式仓库releases。

你可能感兴趣的:(MAVEN,maven)