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

news2024/10/9 23:04:36

一、私库的需求

在一个公司中,后端程序员通常几十上百个。在没有镜像私库的情况下,每当引入新库时,大家都会从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.72

Type=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-engine
            mvn clean package -pl ${module} -am -Dmaven.test.skip=true
        """
    }
    
    stage("上传私库"){
        if(module == "all"){
            sh """
                cd zhifa-engine
                mvn deploy
            """
        }else{
            sh """
                cd zhifa-engine
                mvn deploy -pl ${module}
            """
        } 
    }
}

四、代码展示

本次改造的代码,还是请众道友移步码云

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

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

相关文章

【黑马点评】8-12达人探店、好友关注、附近商户、用户签到、UV统计功能

【黑马点评】8-12达人探店、好友关注、附近商户、用户签到、UV统计功能 8 达人探店8.1 达人探店-发布探店笔记8.2 达人探店-查看探店笔记8.3 达人探店-点赞功能8.4 点赞排行榜 9 好友关注9.1 好友关注-关注和取消关注9.2 好友关注-共同关注9.3 好友关注-Feed流实现方案9.4 好友…

懒人笔记-QT程序UOS打包篇

懒人笔记-uos打包篇 前言1、deploy2、组织打包目录2.1 控制文件2.1.1 control的内容&#xff1a;2.1.2 postinst的内容&#xff1a;2.1.3 postrm的内容&#xff1a; 2.2 执行程序2.3 开机自启&#xff08;可选项&#xff09; 3、输出deb安装包4、服务卸载4.1 服务卸载4.2 程序按…

信息论笔记

知识点 学习视频链接 信息论简介和概率论复习 信息的定义 信息、信号、消息的概念 香农信息 信息论的研究对象和目的 信源&#xff1a;产生消息和消息序列的源编码器&#xff1a;将消息变为适合信道传输的物理量信道&#xff1a;传输或者储藏信号的媒介译码器&#xf…

mysql事务使用和事务隔离级别与sqlserver的比较

在 MySQL 中&#xff0c;事务 (Transaction) 是一个将一组 SQL 语句作为一个整体执行的机制。事务确保要么所有操作都执行成功&#xff0c;要么在遇到错误时回滚到之前的状态&#xff0c;从而保证数据库数据的一致性和完整性。 事务的四大特性&#xff08;ACID&#xff09; 事…

RISC-V笔记——基础

1. 前言 RISC-V旨在支持广泛的定制和专业化。RISC-V的ISA是由一个基本整型ISA和其它对基本ISA的可选扩展组成。每个整型ISA可以使用一个或多个可选的ISA扩展进行扩展。 基本整型ISA精选了最小的一组指令&#xff0c;这些指令足以为编译器、汇编器、链接器和操作系统提供足够的…

iPhone相册怎么删除相同照片

我们都太喜爱用iPhone拍照了&#xff0c;我们的iPhone相册就像是一个永远不想清理的衣柜&#xff0c;堆满了各种美好瞬间和意外的重复照片。面对成百上千的照片&#xff0c;有时候我们不禁想&#xff1a;这些相同的照片到底是怎么混进来的&#xff1f;今天&#xff0c;就让我来…

SpringBoot集成RocketMQ实现六种消息

1. 简介 RocketMQ 支持多种消息类型以满足不同的业务需求 普通消息&#xff08;Standard Message&#xff09;&#xff1a; 这是最常用的消息类型&#xff0c;适用于大多数场景。 可以设置延迟级别&#xff08;Delay Levels&#xff09;&#xff0c;但不支持消息轨迹。 顺序消…

C/C++程序员为什么要了解汇编?了解汇编有哪些好处?如何学习汇编?

目录 1、概述 2、从汇编的角度去理解问题的若干实例说明 2.1、使用空指针去访问类的数据成员或调用类的虚函数为什么会引发崩溃&#xff1f; 2.2、从汇编代码的角度去理解多线程的执行细节&#xff0c;去理解多线程在访问共享资源时为什么要加锁 2.3、使用Windbg静态分析d…

【Matlab】Matlab 导入数据.csv或者.xlsx文件,然后使用这些数据来绘制图表

Matlab 导入数据.csv或者.xlsx文件&#xff0c;然后使用这些数据来绘制图表 初始数据 filename C:\Users\jia\Desktop\yadian\data\1Hz 2024_09_12 17_10_06.csv; 代码&#xff1a; clc;clear close all; % 读取Excel文件 filename C:\Users\jia\Desktop\yadian\data\1Hz …

一篇文章让你学懂python入门

1.编写程序输入三个整数&#xff0c;按升序输出 思路1&#xff1a;使用if-else结构进行大小比较&#xff0c;将三个数进行从小到大的排序 num1 int(input("请输入第一个整数:")) num2 int(input("请输入第二个整数&#xff1a;")) num3 int(input(&qu…

华为OD机试 - 采样过滤(Python/JS/C/C++ 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

MySQL数据的增删改查

CRUD CRUD指的是创建&#xff08;Create&#xff09;,读取&#xff08;Retrieve&#xff09;&#xff0c;更新&#xff08;Update&#xff09;和删除&#xff08;Delete&#xff09;,它是数据库或者持久层在软件系统中执行的基本功能&#xff0c;构成了大多数应用程序和服务器…

图神经网络之异构图转同构图

heterogeneous graph转homogeneous 异构图创建教程dgl.to_homogeneous语法格式例子 异构图创建教程 对于异构图创建&#xff0c;可以看异构图创建教程 dgl.to_homogeneous语法格式 dgl.to_homogeneous(G, ndataNone, edataNone, store_typeTrue, return_countFalse)G&#x…

K8s简介及环境搭建

一、Kubernetes简介 kubernetes 的本质是一组服务器集群&#xff0c;它可以在集群的每个节点上运行特定的程序&#xff0c;来对节点中的容器进行管理。目的是实现资源管理的自动化&#xff0c;主要提供了如下的主要功能&#xff1a; 自我修复&#xff1a;一旦某一个容器崩溃&a…

使用HashiCorp Nomad Cluster App管理高可用集群

容器化和Kubernetes如今已成为创建可扩展云原生应用程序的基本要素。但并非每个应用程序工作负载都需要容器或Kubernetes资源。HashiCorp Nomad是一个轻量级的工作负载调度程序&#xff0c;提供了与Kubernetes相似的优势&#xff0c;但不仅可以管理容器&#xff0c;还能管理其他…

SSL证书是否可以给多个域名使用?

在当今数字化的网络环境中&#xff0c;SSL证书在保障网站安全、保护用户数据传输方面发挥着至关重要的作用。那么&#xff0c;SSL 证书是否可以给多个域名使用呢&#xff1f;这是一个在网站开发、运营和安全管理领域备受关注的问题。 SSL 证书能够给多个域名使用吗&#xff1f…

指针函数C++

指针函数概念 指针函数在C中是一种特殊类型的函数。从本质上讲&#xff0c;它是一个函数&#xff0c;不过其返回值是一个指针类型的数据。例如&#xff0c;像int* plusfunction(int a, int b);这样的函数声明&#xff0c;plusfunction就是一个指针函数&#xff0c;它接受两个i…

Jvisualvm介绍;使用Jvisualvm:运行jvisualvm.exe;安装gc插件;查看gc

一&#xff0c;Jvisualvm介绍 jvisualvm是用来查看硬件使用情况的工具&#xff0c;多数会用它来看内存的使用情况 VisualVM 是Netbeans的profile子项目&#xff0c;已在JDK6.0 update 7 中自带(java启动时不需要特定参数&#xff0c;监控工具在bin/jvisualvm.exe)&#xff0c…

leetcode 10.9 94.二叉树的中序遍历

94. 二叉树的中序遍历 已解答 简单 相关标签 相关企业 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a…

LabelImag标注工具环境配置

LabelImag标注工具环境配置 Anaconda的安装和使用 Anaconda是一个集成了Python解释器、conda包管理器和众多科学计算、数据分析、机器学习等常用库的发行版。它允许用户轻松地管理Python环境和包&#xff0c;无需手动解决依赖问题。Anaconda特别适用于数据科学、机器学习、人…