搭建maven私服

maven

maven简介

什么是maven?

Maven这个单词来自于意第绪语(犹太语),意为知识的积累

Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

maven发展历史

image-20221224185057578

maven的体系结构

image-20221224185416654

maven安装配置

maven下载与配置

下载maven

访问网站 https://maven.apache.org

image-20221225193053478

image-20221225193358873

image-20221225194023576

image-20221225194143162 image-20221225194219474

image-20221225194307487

maven本地配置

打开conf\settings.xml文件

本地仓库位置

配置本地仓库的位置

<localRepository> 本地地址 <localRepository>

image-20221231100718551

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><!-- localRepository| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository--><localRepository>C:\maven-repository</localRepository>
镜像配置

由于中央仓库在境外,网络访问不稳定,故在开发过程中大多配置中央仓库的镜像仓库。

image-20221231101418977

<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url>
</mirror>
profile

配置maven默认使用的jdk环境。

image-20221231101536919

<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk>    </activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties>
</profile>

idea环境安装配置maven

在idea中打开File/Settings

image-20221231101822894

image-20221231101900757

配置本地maven
image-20221231102009662 image-20221231102529368

image-20221231102643931

maven核心思想

maven仓库

image-20221224210030934

maven生命周期

image-20221224185546095

maven项目对象模型(pom)

image-20221224185644952

dependency

image-20221224205636197

依赖Scope配置。

序列依赖范围(Scope)对于主代码classpath有效对于测试代码classpath有效被打包,对于运行时classpath有效案例
1compileyesyesyeslog4j
2testyesjunit
3providedyesyesservlet-api
4runtimeyesJDBC Driver Implementtion

maven私服-nexus

下载安装

下载nexus

访问官网: https://help.sonatype.com/repomanager3/product-information/download

image-20221230152153312

由于网络不稳定,下载问题,我选择其它版本nexus-3.40.1-01-unix.tar.gz

image-20221230153020740

上传到linux服务器

image-20221230153444955image-20221230153518060

image-20221230153722055

解压并重名名

解压nexus-3.40.1-01-unix.tar.gz

tar -zxvf nexus-3.40.1-01-unix.tar.gz

image-20221230154026909

image-20221230154059471

nexus配置

进入nexus-3.40.1/bin文件夹

image-20221230154506369

image-20221230154534475
编辑nexus.vmoptions文件

根据自己机器内存大小,适当配置内存。内存太小未来启动nexus会失败。

vim nexus.vmoptions

image-20221230155224205
配置端口

默认端口为8081,如果需要在要在文件中配置端口。(如果不需改端口,此处可以忽略)

  • 进入etc文件夹

    image-20221230155555257
  • 修改nexus-default.properties文件

    image-20221230155709022

    image-20221230155804893

运行nexus

启动nexus

image-20221230155940806

运行命令**./nexus start**

image-20221230160054424
开放linux的8081端口
  • 检查系统开放的端口号

    firewall-cmd --list-ports

    image-20221230160447791
  • 添加8081端口

    firewall-cmd --zone=public --add-port=端口号/tcp --permanent

    image-20221230160812191
  • 重新加载防火墙

    firewall-cmd --reload

    image-20221230160826381
查看nexus的运行状态

在浏览器中输入http://102.168.0.101:8081

image-20221230161445094

image-20221230161508314

修改管理员密码
  • 查看管理员账户密码

    1. 进入sonatype-work\nexus3文件夹

      image-20221230205551738
    2. 查看管理员密码

      image-20221230205629156
  • 修改管理员密码

    1. 浏览器登录nexus

      image-20221230205922783

    2. 修改密码

      image-20221230210005734

      image-20221230210125712

      image-20221230210220617

      image-20221230210254339


配置私有仓库

nexus中默认仓库

maven-releases (Version policy=Release)默认只允许上传不带SNAPSHOT版本尾缀的包,默认部署策略是Disable redeploy 不允许重复上传相同版本号信息的jar,避免包版本更新以后使用方无法获取到最新的包。

maven-snapshots (Version policy=Snapshot)只允许上传带SNAPSHOT版本尾缀的包,默认部署策略是Allow redeploy,允许重复上传相同版本号信息的jar,每次上传的时候会在jar的版本号上面增加时间后缀信息。

maven-central 中央仓库的拷贝,如果环境可以访问中央仓库,则可以获取到相关的包,否则没用

maven-public 仓库组,不是实际个一个仓库地址,只是将现有的组合到一次,可以通过它看到所属组内全部仓库的jar信息

image-20221230210907451

创建自定义仓库

image-20221230211115408

image-20221230211211724

选择maven2(hosted)

image-20221230211532124

image-20221230211800395

添加新建仓库到maven-public群组中
  • 选中maven-public群组,之后访问maven-public就可以访问自己的私有仓库了。

    image-20221230212044626

  • 创建三个仓库,wnhz-repository(混合拍照&发布), wnhz-releases(发布版), wnhz-snapshots(拍照班)

    image-20231022164215854

    照片版(测试版/开发版)

    image-20231022164542564

    发布版
    在这里插入图片描述

    混合版

在这里插入图片描述

  • 添加仓库到群组maven-public群组中

    image-20231022165333619

在这里插入图片描述

批量上传本地文件到自定义仓库中

上传本地仓库内容到linux服务器
image-20221230213556643

image-20221230213627584

编辑批量上传脚本

在本地仓库上传的文件夹(maven-repository)下创建一个shell脚本,命名 localrepository.sh

  • 创建脚本

    touch localrepository.sh

    image-20221230215900056
  • 编辑脚本

    vim localrepository.sh

    #!/bin/bash
    while getopts ":r:u:p:" opt; docase $opt inr) REPO_URL="$OPTARG";;u) USERNAME="$OPTARG";;p) PASSWORD="$OPTARG";;esac
    donefind . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
    

    image-20221230220027490

添加权限

给脚本localrepository.sh添加执行权限

chmod +x localrepository.sh

image-20221230220208762
导入本地仓库到nexus私有仓库

执行以下命令

./localrepository.sh -u nexus用户名 -p nexus密码 -r 仓库地址(自定义存储混合依赖的)

 ./localrepository.sh -u admin -p 123 -r http://192.168.198.128:8081/repository/wnhz-repository/

在这里插入图片描述

在这里插入图片描述

image-20221230220912896

image-20231022165629991

项目中引用nexus库

在maven的conf/settings.xml中配置server

在settings中配置snapshots,releases和wnhz-repository服务用户名密码

注意:id必须唯一,项目pom中引用的是这个指定id。

 <servers><!-- server| Specifies the authentication information to use when connecting to a particular server, identified by| a unique name within the system (referred to by the 'id' attribute below).|| NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are|       used together.|<server><id>deploymentRepo</id><username>repouser</username><password>repopwd</password></server>--><!-- Another sample, using keys to authenticate.<server><id>siteServer</id><privateKey>/path/to/private/key</privateKey><passphrase>optional; leave empty if not used.</passphrase></server>--><server><id>wnhz</id><username>admin</username><password>123</password></server><server><id>wnhz-release</id><username>admin</username><password>123</password></server><server><id>wnhz-snapshots</id><username>admin</username><password>123</password></server></servers>

在这里插入图片描述

在maven中配置镜像

中央仓库的资源从阿里云访问,其它资源来自nexus私服。

image-20221231104454031

  <mirrors><!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.   <mirror><id>mirrorId</id><mirrorOf>repositoryId</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://my.repository.com/repo/path</url></mirror>--><mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>wnhzmaven</id><mirrorOf>*</mirrorOf><name>蜗牛杭州的maven私服仓库</name><url>http://192.168.198.128:8081/repository/maven-public/</url></mirror></mirrors>

私服访问地址从下图获取:http://192.168.198.128:8081/#browse/browse:maven-public

image-20231022170313546

项目中配置发布管理

在项目的pom.xml文件中添加<distributionManagement>

   <dependencyManagement><dependencies><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${project.druid.version}</version></dependency></dependencies></dependencyManagement><distributionManagement><snapshotRepository><id>wnhz-snapshots</id><url>http://192.168.198.128:8081/repository/wnhz-snapshots/</url></snapshotRepository><repository><id>wnhz-releases</id><url>http://192.168.198.128:8081/repository/wnhz-releases/</url></repository></distributionManagement><repositories><repository><id>nexus</id><url>http://192.168.198.128/repository/wnhz-repository/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
部署项目

在maven中运行部署,部署(deploy)项目到私服。

在这里插入图片描述

在这里插入图片描述

项目中maven配置

<parenta>

继承父项目模块

<parent><artifactId>wnhz-bm</artifactId><groupId>com.wnhz.bm</groupId><version>1.0-SNAPSHOT</version>
</parent>

当前模块坐标

<modelVersion>4.0.0</modelVersion>
<groupId>com.wnhz.bm.common</groupId>
<artifactId>bm-common</artifactId>
<packaging>pom</packaging>

packaging配置

序列参数解释
1pom表示父类型
2jar打包为jar包
3war打包为war包

module

配置项目的子模块名称

<modules><module>bm-common</module><module>bm-domain</module><module>bm-book</module>
</modules>

properties

定义依赖的版本号

<properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><druid.version>1.2.18</druid.version>
</properties><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version>
</dependency>

dependencies

引入依赖

<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency>
</dependencies>

build

构建项目模块

插件
编译插件
 <!-- 编译源代码插件 -->
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>1.8</source><target>1.8</target><encoding>${project.build.sourceEncoding}</encoding></configuration>
</plugin>
打包源码插件
   <build><plugins><!-- 编译源代码插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version><configuration><source>1.8</source><target>1.8</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin><!-- 打包源代码插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><configuration><attach>true</attach></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build>
springboot打包插件

打包将jar包放到项目的更目录out下。

image-20231225190022695

   <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><outputDirectory>../../out</outputDirectory></configuration></plugin></plugins></build>

私服配置

distributionManagement

部署管理,适用于依赖上传

   <snapshotRepository><id>wnhz-snapshots</id><url>http://192.168.201.81:8081/repository/wnhz-snapshots/</url></snapshotRepository><repository><id>wnhz-releases</id><url>http://192.168.201.81:8081/repository/wnhz-releases/</url></repository>
repositories

部署依赖下载

  <repositories><repository><id>nexus</id><url>http://192.168.201.81:8081/repository/maven-public/</url><releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository></repositories>

ory/wnhz-snapshots/


wnhz-releases
http://192.168.201.81:8081/repository/wnhz-releases/


#### repositories> 部署依赖下载```xml<repositories><repository><id>nexus</id><url>http://192.168.201.81:8081/repository/maven-public/</url><releases><enabled>true</enabled><updatePolicy>always</updatePolicy></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy></snapshots></repository></repositories>

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

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

相关文章

vue3实现pinia仓库状态持久化

使用 pinia-plugin-persistedstate 实现pinia仓库状态持久化 安装 pnpm i pinia-plugin-persistedstate # or npm i pinia-plugin-persistedstate # or yarn add pinia-plugin-persistedstatemain.ts引入 import persist from pinia-plugin-persistedstate const app creat…

后端业务架构文档模板

文章目录 1 业务理解1.1 项目目标1.2 业务术语1.3 系统边界1.4 关键领域模型 2 系统架构图2.1 分层架构图2.2 系统链路图2.3 系统部署图 3 关键流程3.1 关键流程13.1.2 流程简述3.1.2 业务流程图3.1.3 安全性3.1.3.1 资金安全3.1.3.2 内容安全 3.1.4 稳定性3.1.4.1 接口依赖3.1…

主流级显卡的新选择,Sparkle(撼与科技)Intel Arc A750兽人体验分享

▼前言 对于玩家而言&#xff0c;英特尔独显的出现不仅打破了NVIDIA与AMD双雄天下的局面&#xff0c;而且旗下的Arc A系列显卡还拥有不俗的做工性能以及颇具优势的价格&#xff0c;无论是升级或者是装新机都非常合适。如果要在Arc A系列当中选一个性能不俗&#xff0c;能够满足…

汽车项目管理

项目节点&#xff1a; MR (Management Review)——管理层评审 KO (Kick Off)——项目正式启动 SI (Strategy Intent)——战略意图 SC (Strategy Confirmation)——战略确认 PA (Program Approval)——项目批准 PR (Product Readiness)——产品就绪 VP (Verification Prototype)…

城市自贸区/经开区/产业园基于EasyCVR视频技术的可视化、移动化、智能化视频监管方案

一、背景需求 移动互联网的发展激发了用户对轻应用的使用习惯。4G、5G使得无线带宽快速提升&#xff0c;令大流量视频数据流逐渐从PC往手持终端转移。借助智能手持终端也可以实时查看、远程控制、存储录像、抓拍图像&#xff0c;能方便快捷地掌握所关注区域的视频动态。 随着…

Advanced IP Scanner - 网络扫描器

Advanced IP Scanner - 网络扫描器 1. Advanced IP ScannerReferences https://www.advanced-ip-scanner.com/cn/ ​ 可靠且免费的网络扫描器可以分析 LAN。该程序可扫描所有网络设备&#xff0c;使您能够访问共享文件夹和 FTP 服务器&#xff0c;(通过 RDP 和 Radmin) 远程控制…

redis,memcached,nginx网络组件,网络编程——reactor的应用

目录 目标网络编程关注的问题连接的建立连接的断开消息的到达消息发送完毕 网络 IO 职责检测 IO检测 io剖析 操作 IO 阻塞IO 和 非阻塞IOIO 多路复用epoll结构以及接口 reactor编程连接建立连接断开数据到达数据发送完毕 reactor 应用&#xff1a;后续补充源码解析单 reacrtor多…

Y9000P + ubuntu22.04 配置Anaconda+pycharm +pytorch

Anaconda3 的安装及使用方法安装 Anaconda3 Anaconda3 是 Anaconda 的具体版本 Anaconda3 中的 Python 解释器默认使用的是 Python3.x 版本&#xff0c;而不是 Python2.x 版本 Python2.x 版本中&#xff0c;字符串是以 ASCII 编码处理的&#xff0c;而在 Python3.x 版本中&am…

Oraclelinux部署Oracle服务

采用图形化界面 user用户 oracle用户 #清屏 clear #设置主机名 hostnamectl set-hostname ceshidb sed -i 1,2 s/^/#/ /etc/hosts echo "127.0.0.1 ceshidb" >> /etc/hosts echo "::1 ceshidb" >> /etc/hosts ping -c 5…

接口测试及常用接口测试工具(postman/jmeter)附教程

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给…

sheng的学习笔记-【中】【吴恩达课后测验】Course 4 -卷积神经网络 - 第三周测验

课程4_第3周_测验题 目录 第一题 1.现在你要构建一个能够识别三个对象并定位位置的算法&#xff0c;这些对象分别是&#xff1a;行人&#xff08;c1&#xff09;&#xff0c;汽车&#xff08;c2&#xff09;&#xff0c;摩托车&#xff08;c3&#xff09;。下图中的标签哪个…

在Centos7中利用Shell脚本:实现MySQL的数据备份

目录 自动化备份MySQL 一.备份数据库脚本 1.创建备份目录 2.创建脚本文件 3.新建配置文件&#xff08;连接数据库的配置文件&#xff09; 4.给文件权限(mysql_backup.sh) ​编辑 5.执行命令 (mysql_backup.sh) ​编辑 二.数据库通过备份恢复 1.创建脚…

【QML-输入类】

Qt编程指南-VX&#xff1a;hao541022348 ■ 输入类■ Slider■ TextArea■ Dial■ ComboBox■ RangeSlider■ TextField■ Tumbler ■ 输入类 提供了基于 数字 和 文本 输入的各种输入控件 ■ Slider 示例一&#xff1a; ColumnLayout{anchors.fill: parent;RowLayout{Labe…

K8S异常处理

一、概述 1、k8s有时候会报错The connection to the server ip:6443 was refused - did you specify the right host or port &#xff0c;本文档提供几种可能产生该报错的原因和排障思路。 二、发现问题 使用任意Kubectl 命令会报错&#xff1a;The connection to the serv…

鸿蒙操作系统:从手机到物联网,打造全场景智能体验

随着科技的不断发展&#xff0c;人们对于操作系统的需求也在不断升级。鸿蒙操作系统&#xff0c;作为华为推出的新一代智能终端操作系统&#xff0c;凭借其强大的分布式能力、流畅的用户体验以及丰富的应用生态&#xff0c;正逐渐成为人们关注的焦点。 一、鸿蒙操作系统概述 …

Nacos2.1.2改造适配达梦数据库7.0

出于业务需求&#xff0c;现将Nacos改造适配达梦数据库7.0&#xff0c;记录本次改造过程。 文章目录 一、前期准备二、适配流程1、项目初始化2、引入驱动3、源码修改 三、启动测试四、打包测试 一、前期准备 Nacos源码&#xff0c;版本&#xff1a;2.1.2&#xff1a;源码下载…

python3遇到Can‘t connect to HTTPS URL because the SSL module is not available.

远程服务器centos7系统上有minicoda3&#xff0c;觉得太占空间&#xff0c;就把整个文件夹删了&#xff0c;原先的Python3也没了&#xff0c;都要重装。 我自己的步骤&#xff1a;进入管理员模式 1.下载Python3的源码&#xff1a; wget https://www.python.org/ftp/python/3.1…

电脑显卡驱动停止响应该怎么办?为什么会出现这种情况

显卡驱动停止响应的原因 当你电脑突然弹框说显卡驱动停止响应&#xff0c;你知道是出现什么问题了吗&#xff0c;下面我们为大家总结了有可能造成显卡驱动停止响应的原因。1. 过热&#xff1a;显卡在长时间高负载下可能会过热&#xff0c;导致驱动停止响应。过高的温度可能…

LSTM的记忆能力实验 [HBU]

目录 模型构建 LSTM层 模型训练 多组训练 模型评价 模型在不同长度的数据集上的准确率变化图 模型汇总 总结 长短期记忆网络&#xff08;Long Short-Term Memory Network&#xff0c;LSTM&#xff09;是一种可以有效缓解长程依赖问题的循环神经网络&#xff0e;LSTM 的…

uni-app tabbar组件

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…