IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> maven简介和nexus私服安装 -> 正文阅读

[Java知识库]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下载,上传,解压缩

  • 地址:https://www.sonatype.com/download-oss-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

修改运行文件

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

修改配置文件

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

启动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端口加入安全组(入口)

私服仓库介绍

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

仓库类型

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

常用仓库

  • Public Repositories仓库组

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

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

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

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

Maven向私服下载构件

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

配置私服仓库地址

<profile>

??<id>nexus-public</id>

??<repositories>

<!--仓库1-->
??<repository>

????<id>Nexus</id>
    <!--你的私服仓库组地址-->
    <url>http://11.11.11.11:8081/nexus/content/groups/public</url>

    <releases>
    <enabled>true</enabled>
    </releases>

    <snapshots>
    <enabled>true</enabled>
    </snapshots>

??</repository>

??<!--仓库2<repository>
????<id>Aliyun</id>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

    <releases>
    <enabled>true</enabled>
    </releases>
??</repository>-->

??</repositories>

</profile>

我这里是配置了仓库组。

激活profile?,才能使配置生效

<activeProfiles>

<activeProfile>nexus-public</activeProfile>

</activeProfiles>

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

使用maven打包发布到私服

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

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

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

<servers>

    <server>
    <!--正式仓库验证-->
    <id>maven-releases</id>
    <username>admin</username>
    <password>admin123</password>

</server>

<server>
    <!--快照仓库验证-->
    <id>maven-snapshots</id>
    <username>admin</username>
    <password>admin123</password>

    </server>

</servers>

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

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

<!-- ?maven私服配置 ?-->
<distributionManagement>

????<!-- 上面版本中以 -SNAPSHOT 为后缀则打包发布时会部署到快照仓库,否则是发布仓库-->
????<repository>

????????<!-- nexus服务器中用户名:在settings.xml中<server>的id-->
????????<id>maven-releases</id>
????????<!-- 这个名称本身定义 -->
????????<name>maven-public1</name>
????????<url>http://11.11.11.11:8081/nexus/content/repositories/releases/</url>

????</repository>


????<!--快照 -->
?????<snapshotRepository>

?????????<id>maven-snapshots</id>
?????????<name>maven-snapshots</name>
?????????<url>http://11.11.11.11:8081/nexus/content/repositories/snapshots/</url>

?????</snapshotRepository>

</distributionManagement>

?

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

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

?

快照仓库

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

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:17:12  更:2021-08-10 13:18:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 5:57:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码