Maven私服Nexus安装及使用

前言
周末在家闲着无聊,不知道做点啥,就想着自己搭建一个Maven私服来玩玩。刚好使用自己之前在电脑上搭建的虚拟机服务器来操作体验了一把。搭建好私服后,以后自己写的一些小模块啊,工具包啥的就可以发布到自己的私服上了,方便在工程中直接引入了,不用在通过一些本地引入的方式来添加了。
配置需求
在搭建私服之前,首先得准备一些相关资源:
  1. 一台服务器:我用的虚拟机搭建的操作系统:Ubuntu 22.04.1 LTS (配置:4核4G 40G磁盘)
  2. JDK 8+:Nexus启动需要JDK环境
  3. Nexus安装包
安装Nexus
下载Nexus
访问Nexus[官网下载地址](https://help.sonatype.com/en/download-archives---repository-manager-3.html),找到自己对应的环境版本下载。我下载的是Java8版本的Unix操作系统的 3.70.2-01版本。下载下来是一个.tar.gz压缩包,将压缩包上传到我们需要安装的目录路径。

解压Nexus
将安装包上传到安装目录后,我们将压缩包进行解压缩,会看到解压出来两个文件夹,分别是**nexus-3.70.2-01**和**sonatype-work。**
drwxrwxr-x 10 layne layne      4096  9月  8 12:52 nexus-3.70.2-01/
-rw-r--r--  1 layne layne 256210120  9月  8 12:18 nexus-3.70.2-01-java8-unix.tar.gz
drwxrwxr-x  3 layne layne      4096  9月  8 12:52 sonatype-work/
配置Nexus
在启动之前,我们可以对Nexus进行一些参数配置。Nexus的参数配置是在nexus.vmoptions这个文件中保存的,文件地址是在nexus-3.70.2-01/bin这个目录下。我这里就是简单修改了一下启动的堆内存大小。
layne@layne-ubuntu-22-3:~/app/nexus$ ll
total 250228
drwxrwxr-x  4 layne layne      4096  98 12:52 ./
drwxrwxr-x  3 layne layne      4096  98 12:51 ../
drwxrwxr-x 10 layne layne      4096  98 12:52 nexus-3.70.2-01/
-rw-r--r--  1 layne layne 256210120  98 12:18 nexus-3.70.2-01-java8-unix.tar.gz
drwxrwxr-x  3 layne layne      4096  98 12:52 sonatype-work/# 进入nexus-3.70.2-01/bin/目录
layne@layne-ubuntu-22-3:~/app/nexus$ cd nexus-3.70.2-01/bin/# 查看参数配置
layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ cat nexus.vmoptions -Xms1703m
-Xmx1703m
-XX:MaxDirectMemorySize=1703m
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=../sonatype-work/nexus3/log/jvm.log
-XX:-OmitStackTraceInFastThrow
-Djava.net.preferIPv4Stack=true
-Dkaraf.home=.
-Dkaraf.base=.
-Dkaraf.etc=etc/karaf
-Djava.util.logging.config.file=etc/karaf/java.util.logging.properties
-Dkaraf.data=../sonatype-work/nexus3
-Dkaraf.log=../sonatype-work/nexus3/log
-Djava.io.tmpdir=../sonatype-work/nexus3/tmp
-Dkaraf.startLocalConsole=false
-Djdk.tls.ephemeralDHKeySize=2048
#
# additional vmoptions needed for Java9+
#
# --add-reads=java.xml=java.logging
# --add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED
# --patch-module java.base=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.locator-4.3.9.jar
# --patch-module java.xml=${KARAF_HOME}/lib/endorsed/org.apache.karaf.specs.java.xml-4.3.9.jar
# --add-opens java.base/java.security=ALL-UNNAMED
# --add-opens java.base/java.net=ALL-UNNAMED
# --add-opens java.base/java.lang=ALL-UNNAMED
# --add-opens java.base/java.util=ALL-UNNAMED
# --add-opens java.naming/javax.naming.spi=ALL-UNNAMED
# --add-opens java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED
# --add-exports=java.base/sun.net.www.protocol.jar=ALL-UNNAMED
# --add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED
# --add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
# --add-exports java.security.sasl/com.sun.security.sasl=ALL-UNNAMED
#
# comment out this vmoption when using Java9+
#
-Djava.endorsed.dirs=lib/endorsed
layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ 

Nexus的控制台相关配置参数是在nexus-default.properties中,文件地址是在nexus-3.70.2-01/etc这个目录下。

# 查看nexus-default.properties配置信息layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/etc$ cat nexus-default.properties 
## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties
##
# Jetty section
application-port=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 section
nexus-edition=nexus-pro-edition
nexus-features=\nexus-pro-featurenexus.hazelcast.discovery.isEnabled=true
启动Nexus
配置完参数后,我们就可以来执行启动命令来运行Nexus了。启动脚本也是在nexus-3.70.2-01/bin这个目录下。进入到目录下。

执行./nexus run命令,通过前台方式启动。看看启动过程中有没有问题,会不会报错啥的。看到Started Sonatype Nexus OSS 3.70.2-01字样的信息说明就是启动成功了。

layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ ll
total 40
drwxrwxr-x  3 layne layne  4096  98 12:52 ./
drwxrwxr-x 10 layne layne  4096  98 12:52 ../
drwxrwxr-x  2 layne layne  4096  98 12:52 contrib/
-rwxr-xr-x  1 layne layne 18546  827 04:49 nexus*
-rw-r--r--  1 layne layne    15  827 04:49 nexus.rc
-rw-r--r--  1 layne layne  1635  98 12:52 nexus.vmoptions
layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ ./nexus run# 省略启动日志信息
---
---
--- 
2024-09-08 17:01:30,324+0800 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - JAX-RS RuntimeDelegate: org.sonatype.nexus.siesta.internal.resteasy.SisuResteasyProviderFactory@16e0d984
2024-09-08 17:01:30,374+0800 INFO  [jetty-main-1] *SYSTEM org.jboss.resteasy.plugins.validation.i18n - RESTEASY008550: Unable to find CDI supporting ValidatorFactory. Using default ValidatorFactory
2024-09-08 17:01:31,890+0800 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.siesta.SiestaServlet - Initialized
2024-09-08 17:01:31,897+0800 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.repository.httpbridge.internal.ViewServlet - Initialized
2024-09-08 17:01:31,917+0800 INFO  [FelixStartLevel] *SYSTEM org.sonatype.nexus.extender.NexusLifecycleManager - Start TASKS
2024-09-08 17:01:31,960+0800 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.handler.ContextHandler - Started o.e.j.w.WebAppContext@16f670b7{Sonatype Nexus,/,null,AVAILABLE}
2024-09-08 17:01:32,047+0800 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@7648a1ce{HTTP/1.1, (http/1.1)}{0.0.0.0:8081}
2024-09-08 17:01:32,048+0800 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Started @46930ms
2024-09-08 17:01:32,048+0800 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - 
-------------------------------------------------Started Sonatype Nexus OSS 3.70.2-01
通过执行`./nexus run`命令启动成功后,我们可以进行退出,按照后台方式去启动nexus。执行后台启动指令`./nexus start`。这样nexus就会以后台方式在运行了。启动完后,我们通过指令`./nexus status`来查看nexus的运行状态。
# 查看nexus运行状态
layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ ./nexus status
nexus is stopped.# 启动nexus
layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ ./nexus start
Starting nexus# 查看nexus运行状态
layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ ./nexus status
nexus is running.
layne@layne-ubuntu-22-3:~/app/nexus/nexus-3.70.2-01/bin$ 
访问Nexus
启动成功后,我们就可以访问Nexus控制台了,我这里虚拟机的IP地址是[192.168.56.103](http://192.168.56.103/),nexus默认启动端口是8081,所以访问地址就是:[http://192.168.56.103:8081/](http://192.168.56.103:8081/)。

首次访问Nexus控制台,默认登录账号是admin,登录密码是在admin.password这个文件中的。文件地址是在另一个文件夹里,路径是在sonatype-work/nexus3/文件夹下面。

使用Nexus
配置Maven使用Nexus
我们找到自己安装的Maven的目录,然后找到Maven配置文件settings.xml。配置一下内容:
<servers><server><id>maven-releases</id><username>admin</username><password>admin@123</password></server>    <server><id>maven-snapshots</id><username>admin</username><password>admin@123</password></server><server><id>maven-public</id><username>admin</username><password>admin@123</password></server>
</servers><mirrors><mirror>       <id>maven-public</id>        <url>http://192.168.56.103:8081/repository/maven-public/</url>       <mirrorOf>*</mirrorOf>       </mirror><mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>       </mirror>  
</mirrors><profiles><profile>    <id>myprofile</id><repositories><repository><id>maven-releases</id>                              <url>http://192.168.56.103:8081/repository/maven-releases/</url>                    <releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository><repository><id>maven-snapshots</id><url>http://192.168.56.103:8081/repository/maven-snapshots/</url>                  <releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>central</id><url>http://central</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories>
</profile><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>
</profiles>
<activeProfiles><activeProfile>myprofile</activeProfile>
</activeProfiles>
配置项目pom文件
找到我们的Maven项目工程中的pom文件,添加私服配置。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>top.layne</groupId><artifactId>layne-nexus</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>layne-nexus</name><url>http://maven.apache.org</url><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.8</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency></dependencies><!-- 添加私服配置 --><distributionManagement><repository><id>maven-releases</id><url>http://192.168.56.103:8081/repository/maven-releases/</url></repository><snapshotRepository><id>maven-snapshots</id><url>http://192.168.56.103:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><configuration><attach>true</attach></configuration><executions><execution><phase>compile</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></build>
</project>
项目打包发布
在idea开发工具中执行clean和deploy执行打包发布操作,或者直接在项目下执行mvn clean deploy命令。

执行完打包发布命令,我们在来登录Nexus控制台,就可以看到我们发布的项目包了。

通过上面的图中我们可以看到发布的包都是一些快照版本的包,包名后面都带了一个时间戳信息。我们需要打正式包的话,只需要去修改我们项目中pom文件中的版本信息就行了,版本名称信息不带SNAPSHOT就行啦。

snapshot包配置:

release包配置:

重新执行打包发布命令。我们刷新以下Nexus页面就会看到正式包信息了,包名是没有带时间戳信息后缀了。

后语
总而言之,Maven私服环境我们就搭建好了。后面我们在自己的项目中就可以使用自己的私服来拉取上传发布项目包了。当然了,Nexus在仓库的配置中还有很多东西可以去学习,其中像代理仓库啊,本地仓库啊各种不同的方式可以去进行私有化的配置。整体流程看下来,安装流程还是很简单的,而且官方文档中也提供了一些相关的安装示例,还有一些相关的系统配置要求可以去参考。

在这里插入图片描述

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

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

相关文章

时序预测 | Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测

时序预测 | Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测 目录 时序预测 | Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-CNN粒子群优化卷积神经网络时间序列预测&#xff08;完整源码和数…

yml在线格式转换工具(properties)

网站地址&#xff1a; 在线yaml转properties-在线properties转yaml-ToYaml.com yml&#xff0c;即yaml文本格式文件的后缀名&#xff0c;yaml可以用来替代properties&#xff0c;配置文件短的情况下可读性更好一些。 但是Spring Boot项目配置项多&#xff0c;yml文件看起来不…

LabVIEW编程语言出于什么原因开发的?

LabVIEW最初由美国国家仪器公司&#xff08;NI&#xff09;于1986年开发&#xff0c;目的是为工程师和科学家提供一种图形化编程环境&#xff0c;简化数据采集、仪器控制、自动化测试和测量系统开发等工作。开发LabVIEW的主要原因包括以下几点&#xff1a; 简化复杂系统开发&am…

哈工大“计算机设计与实践”(cpu)处理器实验设计报告

哈工大“计算机设计与实践”&#xff08;cpu&#xff09;处理器实验设计报告 【哈工大“计算机设计与实践”&#xff08;cpu&#xff09;处理器实验设计报告】 在计算机科学领域&#xff0c;CPU&#xff08;中央处理器&#xff09;是计算机系统的核心部件&#xff0c;负责执行指…

91、K8s之ingress上集

一、Ingress service模式&#xff1a; loadbalance NodePort&#xff1a;每个节点都会有一个指定的端口 30000-32767 内网 clusterip&#xff1a;默认模式&#xff0c;只能pod内部访问 externalName&#xff1a;需要dns提供域名 1.1、对外提供服务的ingress service&…

SQL Server小技巧之遍历日期

使用背景 一般项目中会遇到&#xff0c;求每日的日报这种&#xff0c;以及计算2个日期内的工作日&#xff0c;或者休息日可能会用到&#xff0c;计算休息日可以用额外的一个字段用来标记当前日期是否是休息日 遍历方式一 DECLARE StartDate DATE 2023-01-01, EndDate DATE …

jmeter之TPS计算公式

需求&#xff1a; 如何确定环境当中的TPS指标 PV:&#xff08;Page View&#xff09;即页面访问量&#xff0c;每打开一次页面PV计数1&#xff0c;刷新页面也是。PV只统计页面访问次 数。 UV(Unique Visitor),唯一访问用户数&#xff0c;用来衡量真实访问网站的用户数量。 一般…

携手鲲鹏,长亮科技加速银行核心系统升级

新经济周期下&#xff0c;银行净息差持续收窄、盈利压力加大、市场竞争日趋加剧。同时&#xff0c;国家相关政策不断出台&#xff0c;对金融科技的自主创新与安全可控提出了更高要求。 在这样的大背景下&#xff0c;银行业的数字化转型已经步入深水区。其中&#xff0c;核心系统…

appium server gui详细按照步骤

1.安装appium server desktop Appium安装提供两种方式:桌面版和命令行版。其中桌面版又分为 Appium GuI 和 Appium Desktop 。作为初学者&#xff0c;用桌面版&#xff0c;对初学者比较友好。 官网下载地址&#xff1a;Releases appium/appium-desktop GitHubTags appium/…

OpenCV class2-C#+winfrom显示控件使用窗口大小并内存管理

一.控件效果说明 二.代码声明&#xff08;已经循环读取10000次&#xff09; 全局 OpenCvSharp.Point point new OpenCvSharp.Point(0, 0); OpenCvSharp.Size size2; Mat src new Mat(); 初始化 size2 new OpenCvSharp.Size(pictureBox1.Size.Width, pictureBox1.Size.Hei…

MySQL迁移达梦报错,DMException: 第1 行附近出现错误: 无效的表或视图名[ACT_GE_PROPERTY]

达梦数据库选好模式和登录用户&#xff0c;迁移时的目标模式名要和达梦的当前登录的用户名相同&#xff0c;否则查询的时候需要“form 模式名.表名”&#xff0c;只from表名就会报表不存在的错误。

汽车无钥匙启动功能工作原理

移‌动管家无钥匙启动‌是一种科技化的汽车启动方式&#xff0c;它允许车主在不使用传统钥匙的情况下启动车辆。这种技术通过智能感应系统实现&#xff0c;车主只需携带智能钥匙&#xff0c;当靠近车辆时&#xff0c;车辆能够自动解锁并准备启动。启动车辆时&#xff0c;车主无…

水库大坝安全监测方案,双重守护,安全无忧

水库作为重要的水利设施&#xff0c;在防洪、灌溉及供水等方面发挥着重要作用。然而随着时间的推移&#xff0c;大坝面临着自然老化、设计标准不足及极端天气等多重挑战&#xff0c;其安全性与稳定性日益受到关注。水库堤坝险情导致的洪涝灾害给人民生命财产和经济社会发展带来…

TDengine 与 SCADA 强强联合:提升工业数据管理的效率与精准

随着时序数据库&#xff08;Time Series Database&#xff09;的日益普及&#xff0c;越来越多的工业自动化控制&#xff08;工控&#xff09;人员开始认识到其强大能力。然而&#xff0c;时序数据库在传统实时数据库应用领域&#xff0c;特别是在过程监控层的推广仍面临挑战&a…

凸优化学习(2)——梯度类方法求解(gradient descent)

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…

Vue3 响应式工具函数isRef()、unref()、isReactive()、isReadonly()、isProxy()

isRef() isRef()&#xff1a;检查某个值是否为 ref。 isRef函数接收一个参数&#xff0c;即要判断的值。如果该参数是由ref创建的响应式对象&#xff0c;则返回true&#xff1b;否则&#xff0c;返回false。 import { ref, isRef } from vue const normalValue 这是一个普通…

虚拟背景扣像SDK解决方案,电影级抠像技术

美摄科技&#xff0c;作为影像技术领域的领航者&#xff0c;凭借其革命性的虚拟背景抠像SDK解决方案&#xff0c;正以前所未有的方式&#xff0c;重新定义电影级背景抠像技术&#xff0c;让直播与视频制作迈入全新境界。 电影级抠像技术&#xff0c;重塑视觉盛宴 美摄科技的虚…

ArcGIS属性表汉字转拼音

直接复制粘贴现成代码&#xff1a; # -*- coding: utf-8 -*-import arcpyfrom arcpy import envimport osimport pypinyin import sys# 不带声调皿stylepypinyin.NORMAL)def pinyin(word): s for i in pypinyin.pinyin(word, stylepypinyin.NORMAL): s .join(…

PHP一键寄送尽在掌中快递寄件小程序

一键寄送尽在掌中 —— 快递寄件小程序全体验 &#x1f31f; 开篇&#xff1a;告别繁琐&#xff0c;拥抱便捷新纪元 还在为寄快递而烦恼吗&#xff1f;排队等待、填写繁琐的单据、等待快递员上门...这些统统成为过去式&#xff01;“一键寄送尽在掌中快递寄件小程序”。它就像…

【深度学习】【OnnxRuntime】【C++】模型转化、环境搭建以及模型部署的详细教程

【深度学习】【OnnxRuntime】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【OnnxRuntime】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转onnxWindows平…