Mushroom Notes Mushroom Notes
🍄首页
  • JavaSE

    • 基础篇
    • 数据结构
    • IO流
    • Stream流
    • 函数式接口
    • JUC
    • 反射
    • 网络编程
    • 设计模式
  • JavaEE

    • Servlet
    • JDBC
    • 会话技术
    • 过滤器监听器
    • 三层架构
  • JDK

    • 总览
  • JVM

    • 总览
  • 常用mate
  • CSS
  • JavaScript
  • rds 数据库

    • MySQL
    • MySQL 进阶
    • MySQL 库表规范
  • nosql 数据库

    • Redis
    • Redis 进阶
    • Redis 底层
    • MongoDB
  • Spring生态

    • Spring
    • Spring MVC
    • Spring boot
    • Spring Validation
  • Spring Cloud生态

    • Spring Cloud
    • 服务治理
    • 远程调用
    • 网关路由
    • 服务保护
    • 分布式事务
    • 消息中间件
  • 数据库

    • Mybatis
    • Mybatis Plus
    • Elasticsearch
    • Redisson
  • 通信

    • Netty
📚技术
  • 方案专题
  • 算法专题
  • BUG专题
  • 安装专题
  • 网安专题
  • 面试专题
  • 常用网站
  • 后端常用
  • 前端常用
  • 分类
  • 标签
  • 归档

kinoko

一位兴趣使然的热心码农
🍄首页
  • JavaSE

    • 基础篇
    • 数据结构
    • IO流
    • Stream流
    • 函数式接口
    • JUC
    • 反射
    • 网络编程
    • 设计模式
  • JavaEE

    • Servlet
    • JDBC
    • 会话技术
    • 过滤器监听器
    • 三层架构
  • JDK

    • 总览
  • JVM

    • 总览
  • 常用mate
  • CSS
  • JavaScript
  • rds 数据库

    • MySQL
    • MySQL 进阶
    • MySQL 库表规范
  • nosql 数据库

    • Redis
    • Redis 进阶
    • Redis 底层
    • MongoDB
  • Spring生态

    • Spring
    • Spring MVC
    • Spring boot
    • Spring Validation
  • Spring Cloud生态

    • Spring Cloud
    • 服务治理
    • 远程调用
    • 网关路由
    • 服务保护
    • 分布式事务
    • 消息中间件
  • 数据库

    • Mybatis
    • Mybatis Plus
    • Elasticsearch
    • Redisson
  • 通信

    • Netty
📚技术
  • 方案专题
  • 算法专题
  • BUG专题
  • 安装专题
  • 网安专题
  • 面试专题
  • 常用网站
  • 后端常用
  • 前端常用
  • 分类
  • 标签
  • 归档
  • Linux

  • Docker

  • Nginx

  • Maven

    • Maven 基本使用
    • Maven 私服
      • 仓库概念
      • 私服安装
        • 启动
        • 访问
      • 仓库类别和配置
        • 修改配置
        • 修改RELEASES为可以重复部署
      • 上传项目到私服
      • 从私服下载项目
        • 私服下载的配置
  • 文件存储

  • 压测

  • Git技巧

  • GitHub技巧

  • 知识碎片

  • 技术
  • Maven
kinoko
2023-12-18
目录

Maven 私服

# 仓库概念


中央仓库
目前来说: https://repo1.maven.org/maven2/是真正的Maven中央仓库的地址,该地址内置在Maven的源码中其他的都是镜像。
仓库镜像
如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像,使用镜像可以提高项目构建效率。
仓库的索引
中央仓库带有索引文件以方便用户对其进行搜索,索引每周更新一次,中央仓库的索引有几十M。
黑名单
如果某个IP地址恶意的下载中央仓库内容,例如全公司100台机器使用同一个IP反复下载,这个IP(甚至是IP段)会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服。
私服
有些公司不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。
image.png

# 私服安装


Nexus的官网 https://www.sonatype.com/ (opens new window)
image.png

# 启动


  1. 进入Nexus的bin目录下运行cmd进入命令行
  2. 可以输入nexus /?查看所有的参数,输入 /run在窗口下运行服务器

image.png
启动成功,默认是8081,不要关闭这个窗口,不然服务器就退出了image.png

# 访问


  1. 当Nexus启动后,可以在浏览器中输入:http://localhost:8081/ (opens new window)可以看到以下页面

image.png、

  1. 点击右上角登录

image.png

  1. 弹出以下对话框

image.png

  1. 输入默认的帐号:admin,密码:在admin.password文件中找
  2. 登录成功以后出现配置向导,直接点next
  3. 修改密码,输入两次,建议都使用admin,不要忘记了
    image.png
  4. 允许匿名的账户登录

image.png

  1. 配置完成

image.png

# 仓库类别和配置


image.png
proxy:是远程仓库的代理。比如说在nexus中配置了一个central仓库的proxy,当用户向这个proxy请求一个组件,这个proxy就会先在本地查找,如果找不到的话,就会从远程仓库下载,然后返回给用户,相当于起到一个中转的作用。
Hosted:是宿主仓库,用户可以把自己的一些构件,deploy到hosted中,也可以手工上传构件到hosted里。比如说oracle的驱动程序,在central repository是获取不到的,就需要手动上传到hosted里。
Group:是仓库组,在maven里没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只要统一配置group的地址就可以了。
注:公司内部通常只需关注hosted宿主仓库就可以了

# 修改配置


Nexus的中央仓库,默认配置的是maven的中央仓库:https://repo1.maven.org/maven2/ (opens new window),为了提高速度可以配置成阿里云的中央仓库https://maven.aliyun.com/repository/central (opens new window)

  1. 选择中央仓库

image.png

  1. 修改地址:Remote storage的位置

image.png

  1. 记得点最下面的保存按钮image.png

# 修改RELEASES为可以重复部署


  1. 因为jar包要上传到这个仓库RELEASES下
  2. 仓库选择Releases

image.png

  1. 在Access Settings中选择Allow Redeploy,设置为可以重复部署

image.png

  1. 点保存按钮

# 上传项目到私服


  1. 配置本地仓库访问私服的权限,修改maven的conf/settings.xml配置文件,用户名和密码,复制如下片段到相应的位置,大约在111行。注意:密码要与你设置的密码相同
<server>
  <id>releases</id>
  <username>admin</username>
  <password>admin</password>
</server>
<server>
  <id>snapshots</id>
  <username>admin</username>
  <password>admin</password>
</server>
1
2
3
4
5
6
7
8
9
10
  1. 新建一个待发布的项目模块

image.png

  1. 在pom.xml文件中添加以下代码段
<distributionManagement>
  	<repository>
  		<id>releases</id>
	    <url>http://localhost:8081/repository/maven-releases/</url>
  	</repository> 
  	<snapshotRepository>
  		<id>snapshots</id>
	    <url>http://localhost:8081/repository/maven-snapshots/</url>
  	</snapshotRepository> 
</distributionManagement>
1
2
3
4
5
6
7
8
9
10

上面的url即仓库地址

  1. 执行deploy命令,上传项目到私服。

image.png

  1. 上传日志结果

image.png

  1. 去私服查看snapshots上传的结果

image.png

  1. 修改当前模块的坐标为RELEASE

image.png

  1. 再次上传到私服

image.png

  1. 查看上传的日志

image.png

  1. 查看RELEASE仓库上传的结果

image.png

# 从私服下载项目


# 私服下载的配置

注:项目A必须是RELEASE版本才可以使用

  1. 假设上面的模块是A,创建另一个模块B
<groupId>com.itheima</groupId>
<artifactId>heima-deploy-b</artifactId>
<version>1.0-RELEASE</version>
1
2
3
  1. 依赖于上面的模块A
<dependencies>
    <dependency>
        <groupId>com.itheima</groupId>
        <artifactId>heima-deploy</artifactId>
        <version>1.0-RELEASE</version>
    </dependency>
</dependencies>
1
2
3
4
5
6
7
  1. 删除本地仓库中A模块的jar包
  2. 修改%MAVEN_HOME%\conf\setttings.xml文件,项目B是依赖于私服仓库中模块A
    注:后面还要再改回来,以后还是使用阿里云的镜像
<mirror>
   <id>nexus</id>
   <mirrorOf>*</mirrorOf>
   <url>http://localhost:8081/repository/maven-public/</url>
</mirror>
1
2
3
4
5
  1. clean清除项目B,再complie编译一次
    image.png
  2. 可以看到日志信息是从本地仓库中下载
    image.png
#java工程管理#maven#私服
上次更新: 2023/12/29 11:32:56
Maven 基本使用
Minio

← Maven 基本使用 Minio→

最近更新
01
JVM 底层
09-13
02
JVM 理论
09-13
03
JVM 应用
09-13
更多文章>
Theme by Vdoing | Copyright © 2022-2024 kinoko | MIT License | 粤ICP备2024165634号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式