芝法酱学习笔记(0.6)——nexus与maven私库

一、私库的需求

在一个公司中,后端程序员通常几十上百个。在没有镜像私库的情况下,每当引入新库时,大家都会从maven中央仓库下载一遍这个库。这样无疑十分浪费。再加之国家的防火墙政策,许多人下载lib包可能还会十分缓慢。不同程序员会配置不同的国内镜像,有些缺乏经验的小伙伴会因为配错而程序跑不起来,这都大大降低了项目组开发的效率。
有时,公司自己会开发一些自家公司专属的lib包,推高公司的技术力。这些lib包并不想让其他公司的竞争者使用,这时通常会把这种lib包放在公司内网。我们不希望在IDEA里手动引用这些lib包,想让这些lib包和其他maven的引用方法一致。
这时,nexus就应运而生。

二、nexus的安装

2.1 下载安装

首先,我们可以去官网下载,下载后的包名叫nexus-3.72.0-04-unix.tar.gz。
把这个包拷贝到linux机器的/WORK/DOWNLOADS中

cd /WORK/DOWNLOADS
tar -xzvf nexus-3.72.0-04-unix.tar.gz -C "/WORK/SOFTWARE"
cd /WORK/SOFTWARE
mkdir nexus
#然后,把那两个包移动到nexus里,一个改名为3.72,一个改名为sonatype-work

此时,已经安装好了。

2.2 配置启动

首先,先介绍一下nexus的一些重要配置文件

文件路径作用
3.72/bin/nexusnexus的启动脚本
3.72/bin/nexus.vmoptionsnexus的JVM配置
3.72/etc/nexus-default.propertiesnexus的配置

2.2.1 nexus-default.properties配置

application-port=8889 #端口,这个得改了,8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/nexus #这个也很重要,为了配置到nginx后面# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\nexus-pro-feature

2.2.2 nginx配置

/WORK/APP/nginx/conf/nginx.conf

		location /nexus/ {proxy_pass http://127.0.0.1:8889;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_read_timeout 90;# 解决Nexus重定向问题,将 /nexus/ 路径传递给Nexus#proxy_redirect http://localhost:8889/ /nexus/;}

启动程序

sysyemctl reload openresty
cd /WORK/SOFTWARE/nexus/3.72/bin
nexus start

2.2.3 自启动配置

useradd nexus
passwd nexus
vim /lib/systemd/system/nexus.service

做如下配置

[Unit]
Description=Nexus Repository Manager
After=network.target[Service]
WorkingDirectory=/WORK/SOFTWARE/nexus/3.72Type=forking
User=nexus      # Nexus运行的用户,建议使用专用用户
Group=nexus     # Nexus运行的用户组# 设置Nexus安装目录和启动脚本
ExecStartPre=/bin/bash -c 'source /etc/profile'
ExecStart=/bin/bash -c 'source /etc/profile && /WORK/SOFTWARE/nexus/3.72/bin/nexus start'
ExecStop=/WORK/SOFTWARE/nexus/3.72/bin/nexus stop
Restart=on-abort[Install]
WantedBy=multi-user.target
systemctl daemon-reload

2.2.4 配置阿里云镜像

由于国内有墙的原因,可以加一个阿里云镜像
在管理界面,新增一个仓库
在这里插入图片描述
选择maven2 proxy类型的
在这里插入图片描述
而后把url设置为:https://maven.aliyun.com/repository/public
然后,修改maven-public中的组,把阿里云的放在最上面
在这里插入图片描述

三、私库实践

3.1 试试从私库下载

首先,我们设置一下nexus下载jar包的位置,我把位置设置在/WORK/SDK/JAVA/nexus的位置下
记得更改文件夹的所属权限(因为我用nexus用户启动的)

chown -R nexus /WORK/SDK/JAVA/nexus

在这里插入图片描述
更改maven的配置
我的maven放在/WORK/SOFTWARE/maven
maven的配置文件做如下修改:
注意:我这里jenkins和nexus放在一个服务器里的,所以用localhost。如果不是的话,建议使用内网ip:端口

<mirrors><mirror><id>nexus-repo</id><mirrorOf>*</mirrorOf><name>nexus. private maven repository</name><url>http:localhost:8889/nexus/repository/maven-public</url></mirror>
</mirrors><servers><!--该账号是普通开发者用的--><server><id>nexus-repo</id><username>developer</username><password>???@1314</password></server><!--该账号是向私库上传包用的--><server><id>nexus-repo-main</id><username>main-developer</username><password>???@1314</password></server>
</servers><profiles><profile><repositorys><repository><id>nexus-repo</id><url>http://localhost:8889/nexus/repository/maven-public/</url>  <!-- Nexus 私库的地址 --><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositorys></profile>
</profiles>

为了验证是否生效,我们把本地仓库的jar包全删了

rm -r /WORK/SDK/JAVA/reposity/*

再次使用jenkins编译项目,观察现象。
可以发现,jar包均从私库下载了

3.2 study2024 改造

本次,我们打算把core包分离成一个单独的项目,并且把编译好的包传到私库。
其他应用的服务,直接引用私库的core包即可,使业务开发人员不比关心那些底层细节
由于篇幅原因,本节不便赘述,还是请大家移步码云
这是原先的core包
在这里插入图片描述

这里多说一点,all包,仅仅就是把所有的包引用一下,方便应用程序引用
这是原先的业务包
在这里插入图片描述

3.3 把study2024的core包传上私库

3.3.1 zhifa-engine的pom配置

只需要在织法引擎项目中的根pom里,加入如下配置,使其中的服务id和打包机上maven配置的服务Id对应上。
如果我们设置的版本号,是snapshot时,deploy就会自动走snapshot模式。
由于本系列是学习用的,就不那么讲究了,全用正式的。当改代码时,如果没升版本,记得把本地仓库的jar包删删,不然可能会出错

<distributionManagement><repository><id>nexus-repo-main</id><url>http://localhost:8889/nexus/repository/maven-releases/</url></repository><snapshotRepository><id>nexus-repo-main</id><url>http://localhost:8889/nexus/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>

3.3.2 jenkins 管线命令

勾选This project is parameterized,添加如下参数

参数名默认值描述
moduleall上传哪个模块,可选项有common,enum-memo,mp-enhance,all
gitTagmastergit分支
node{stage("拉取代码"){git branch: "${gitTag}", credentialsId: 'gitSec', url: 'https://gitee.com/hataksumo/study2024-class005.git'}stage("编译项目"){sh """cd zhifa-enginemvn clean package -pl ${module} -am -Dmaven.test.skip=true"""}stage("上传私库"){if(module == "all"){sh """cd zhifa-enginemvn deploy"""}else{sh """cd zhifa-enginemvn deploy -pl ${module}"""} }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555562.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python水循环标准化对比算法实现

&#x1f3af;要点 算法区分不同水循环数据类型&#xff1a;地下水、河水、降水、气温和其他&#xff0c;并使用相应标准化降水指数、标准化地下水指数、标准化河流水位指数和标准化降水蒸散指数。绘制和计算特定的时间序列比较统计学相关性。使用相关矩阵可视化集水区和显示空…

推荐:五种限流(Rate Limiting)算法

推荐&#xff1a;五种限流(Rate Limiting)算法&#xff0c;发现一个不错的讲这个算法的UP,地址是&#xff1a;05~五种限流(Rate Limiting)算法_哔哩哔哩_bilibili https://www.bilibili.com/video/BV11k4SerE74/ 全部用动画展示&#xff0c;十分生动&#xff0c;比如漏桶算法&…

短剧小程序短剧APP在线追剧APP网剧推广分销微短剧小剧场小程序集师知识付费集师短剧小程序集师小剧场小程序集师在线追剧小程序源码

一、产品简介功能介绍 集师专属搭建您的独有短剧/追剧/小剧场小程序或APP平台 二、短剧软件私域运营解决方案 针对短剧类小程序的运营&#xff0c;以下提出10条具体的方案&#xff1a; 明确定位与目标用户&#xff1a; 对短剧类小程序进行明确定位&#xff0c;了解目标用户群体…

【AI知识点】置信区间(Confidence Interval)

置信区间&#xff08;Confidence Interval, CI&#xff09; 是统计学中用于估计总体参数的范围。它给出了一个区间&#xff0c;并且这个区间包含总体参数的概率等于某个指定的置信水平&#xff08;通常是 90%、95% 或 99%&#xff09;。与点估计不同&#xff0c;置信区间通过区…

开源的云平台有哪些?

开源云平台为用户提供了构建、管理和运行云基础设施及应用的能力&#xff0c;同时允许社区参与开发和改进。以下是一些知名的开源云平台&#xff1a; 1. OpenStack 简介&#xff1a;OpenStack&#xff1a;一个广泛使用的开源云平台&#xff0c;它由多个组件组成&#xff0c;提…

深度学习中的结构化概率模型 - 结构化概率模型的深度学习方法篇

序言 在深度学习的广阔领域中&#xff0c;结构化概率模型&#xff08; Structured Probabilistic Model \text{Structured Probabilistic Model} Structured Probabilistic Model&#xff09;扮演着至关重要的角色。这类模型利用图论中的图结构来表示概率分布中随机变量之间的…

精品WordPress主题/响应式个人博客主题Kratos

Kratos 是一款专注于用户阅读体验的响应式 WordPress 主题&#xff0c;整体布局简洁大方&#xff0c;针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净&#xff0c;简单且响应迅速的博客主题&#xff0c;Vtrois创建和维护&#xff0c; 主…

Markdown实用语法汇总

说明&#xff1a; 本来只展示本人常用的、markdown特有优势的一些语法。表格输入markdown的弱项&#xff0c;不作介绍&#xff0c;借助软件创建即可。引用图片、音频、视频等&#xff0c;虽然很方便&#xff0c;但是内容集成度不高&#xff0c;需要上传发布的时候很不方便&…

学习C语言(23)

整理今天的学习内容 1.文件的概念 使用文件是为了将数据永久化地保存 按照文件功能&#xff0c;在程序设计中一般把文件分成两类&#xff1a; 每个文件都有一个唯一的文字标识&#xff0c;文字标识常被称为文件名&#xff0c;文件名包含文件路径&#xff0c;文件名主干和文件…

Apollo9.0 Planning2.0决策规划算法代码详细解析 (4): PlanningComponent::Proc()

&#x1f31f; 面向自动驾驶规划算法工程师的专属指南 &#x1f31f; 欢迎来到《Apollo9.0 Planning2.0决策规划算法代码详细解析》专栏&#xff01;本专栏专为自动驾驶规划算法工程师量身打造&#xff0c;旨在通过深入剖析Apollo9.0开源自动驾驶软件栈中的Planning2.0模块&am…

vAPI靶场

前言 自行去搭建vAPI靶场&#xff0c;配合postman使用 vapi1 创建用户 第一个用户 {"username": "shi","name": "shi1","course": "nihao","id": 10 } 第二个用户 {"username": "hui…

论文理解【LLM-CV】—— 【MAE】Masked Autoencoders Are Scalable Vision Learners

文章链接&#xff1a;Masked Autoencoders Are Scalable Vision Learners代码&#xff1a;GitHub - facebookresearch/mae发表&#xff1a;CVPR 2022领域&#xff1a;LLM CV一句话总结&#xff1a;本文提出的 MAE 是一种将 Transformer 模型用作 CV backbone 的方法&#xff0c…

制作一个流水灯,控制发光二极管由上至下再由下至上反复循环点亮显示,每次点亮一个发光二级管(Proteus 与Keil uVision联合仿真)

一、代码编写 &#xff08;1&#xff09;编写程序来控制发光二极管由上至下的反复循环流水点亮&#xff0c;每次点亮一个发光二极管。 #define uchar unsigned char // 定义uchar为unsigned char类型uchar tab[] {0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f, 0x7f, 0x…

一个不错的 SQL 编码风格的指南

前言 SQL语句的编写对于我们后端开发者而言是一个必备的技巧&#xff0c;在日常工作中&#xff0c;SQL语言编写的质量不仅仅会影响到团队的合作效率与项目的可维护性&#xff0c;还直接关系到数据库的性能优化与数据安全。今天大姚给大家分享一个不错的 SQL 编码风格的指南&am…

【Qt】控件概述(4)—— 输出类控件

输出类控件 1. QLineEdit——单行输入框2. QTextEdit——多行输入框3. QComboBox——下拉框4. QSpinBox——微调框5. QDateEdit && QTimeEdit && QDateTimeEdit6 QDial——旋钮7. QSlider——滑动条 1. QLineEdit——单行输入框 QLineEdit是一个单行的输入框&…

定时器实验(Proteus 与Keil uVision联合仿真)

一、 &#xff08;1&#xff09;设置TMOD寄存器 T0工作在方式1&#xff0c;应使TMOD寄存器的M1、M001&#xff1b;应设置C/T*0&#xff0c;为定时器模式&#xff1b;对T0的运行控制仅由TR0来控制&#xff0c;应使相应的GATE位为0。定时器T1不使用&#xff0c;各相关位均设为…

执行路径带空格的服务漏洞

原理 当系统管理员配置Windows服务时&#xff0c;必须指定要执行的命令&#xff0c;或者运行可执行文件的路径。 当Windows服务运行时&#xff0c;会发生以下两种情况之一。 1、如果给出了可执行文件&#xff0c;并且引用了完整路径&#xff0c;则系统会按字面解释它并执行 …

Listen1 0.8.2| 免费无广告,整合多平台音乐,界面简洁,操作便捷。

Listen 1 是一款开源且免费的跨平台音乐播放器&#xff0c;它能够整合多个主流音乐平台的资源&#xff0c;让你在一个应用中就能听到来自不同平台的歌曲。无论你是网易云音乐、QQ音乐还是虾米音乐的用户&#xff0c;你都可以通过 Listen 1 来享受无缝的音乐体验。它支持网易云音…

【每天学个新注解】Day 16 Lombok注解简解(十五)—@FieldNameConstants

FieldNameConstants 根据属性名生成常量类的常量。 1、如何使用 加在需要根据属性名生成常量的属性上。 2、代码示例 例&#xff1a; FieldNameConstants public class Test {private String iAmAField;private int andSoAmI;FieldNameConstants.Exclude private int asA…

【机器学习(十一)】糖尿病数据集分类预测案例分析—XGBoost分类算法—Sentosa_DSML社区版

文章目录 一、XGBoost算法二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入和统计分析(二)数据预处理(三)模型训练与评估(四)模型可视化 三、总结 一、XGBoost算法 关于集成学习中的XGBoost算法原理&#xff0c;已经进行了介绍与总结&#xff0c;相关内容可参考【…