Maven私服Nexus安装及使用

news2024/11/13 15:04:44
前言
周末在家闲着无聊,不知道做点啥,就想着自己搭建一个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-feature

nexus.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.coloradmin.cn/o/2134448.html

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

相关文章

【信创】推荐一款好用的免费在线流程图思维导图工具 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【信创】推荐一款好用的免费在线流程图思维导图工具 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家推荐一款非常好用的免费在线流程图和思维导图工具——ProcessOn。无论是项目管理、数据分析、头脑风暴还是日常办公&#xff0c;…

常见的弹性公网ip类型

常见的弹性公网ip类型有常规BGPIP、精品BGPIP、加速IP、静态单线IP、高防EIP。弹性公网ip的优点在于灵活、稳定、安全和可扩展等方面&#xff0c;适用于不同的业务场景和需求&#xff0c;用户可以根据自身的实际情况进行选择。以下是对常见的弹性公网ip类型的具体分析&#xff…

使用 PyCharm 新建 Python 项目详解

使用 PyCharm 新建 Python 项目详解 文章目录 使用 PyCharm 新建 Python 项目详解一 新建 Python 项目二 配置环境1 项目存放目录2 Python Interpreter 选择3 创建隔离环境4 选择你的 Python 版本5 选择 Conda executable 三 New Window 打开项目四 目录结构五 程序编写运行六 …

ADS1248 测电阻 0~10欧姆

目录 需求 端口供电范围 PGA 振荡器 恒流源IDAC 配置 需求 测量范围0~10欧姆&#xff1b; 误差&#xff1a;0.01欧姆 端口供电范围 注意的端口Vref 最小电压0.5V &#xff1b; PGA 振荡器 恒流源IDAC 配置 恒流源通过电阻提供基准&#xff1b; 恒流源1mA&#xff0c…

k8s的搭建

一、安装环境 准备三台主机&#xff1a; 192.168.1.66 k8s-master 192.168.1.77 k8s-node01 192.168.1.88 k8s-node02 网段&#xff1a; Pod ⽹段 172.16.0.0/16 Service ⽹段 10.96.0.0/16 注&#xff1a;宿主机⽹段、Pod…

集群聊天服务器项目【C++】项目介绍和环境搭建

前言&#xff1a;学习一个基于C集群聊天服务器的项目&#xff0c;记录学习的内容和学习的过程。 1.项目介绍 在 Linux 环境下基于 muduo 开发的集群聊天服务器。实现新用户注册、用户登录、添加好友、添加群组、好友通信、群组聊天、保持离线消息等功能。 2.技术栈 Json序列…

CSS基本布局理解(测试)——WEB开发系列38

对CSS学习已经接近尾声&#xff0c;下面你可以对以下两道“小卡拉米”测试进行测试下CSS理解程度。 题 1&#xff1a;基于栅格布局的现代博客首页设计 题目要求&#xff1a; 创建一个博客首页布局&#xff0c;包含一个顶部导航栏、一个主要的内容区域&#xff08;左侧为博客文…

第二证券:频频收购!81.64亿元买下“超级工厂”

下周A股解禁总市值较小&#xff0c;为262.57亿元。 赛力斯出手增资 为增强赛力斯轿车的资本实力&#xff0c;满意其可继续高质量发展需要&#xff0c;昨日晚间&#xff0c;赛力斯发布公告称&#xff0c;拟以自有资金向赛力斯轿车增资50亿元&#xff0c;完结增资后&#xff0c…

几天不上微博ip地址会消失吗?微博上的ip地址准确吗

微博&#xff0c;作为当代最受欢迎的社交媒体平台之一&#xff0c;近年来开始显示用户的IP地址。这一功能的引入&#xff0c;无疑增强了平台的透明度和互动性&#xff0c;但同时也引发了一系列关于IP地址准确性和持久性的疑问。本文将深入探讨几天不上微博IP地址是否会消失&…

为何视频监控AI分析逐渐融入摄像头?浅述背后的必然逻辑

视频监控的应用领域极为广泛&#xff0c;它已成为现代社会中各行各业不可或缺的信息化基石。从工业生产到日常生活&#xff0c;视频监控无处不在&#xff0c;其重要性不言而喻。 传统上&#xff0c;视频监控仅局限于通过摄像头捕捉并储存图像&#xff0c;以此辅助我们的工作与…

linux-IO-进程-线程(相关函数)

相关代码资源&#xff1a;xLinux: linux&#xff0c;网络编程阶段代码 1、IO 库函数 错误处理&#xff1a; 1. errno errno是一个全局变量&#xff08;在大多数实现中&#xff09;&#xff0c;用于报告系统调用的错误。当系统调用&#xff08;如文件操作、内存分配等&…

VirtualMultiplexer:直接由HE生成IHC的生成式病理AI模型|顶刊精析·24-09-14

小罗碎碎念 这篇文章于2024-09-09发表于Nature Machine Intelligence&#xff0c;目前IF18.8。 这篇文章介绍了一种名为VirtualMultiplexer的AI工具&#xff0c;能够通过生成式对抗网络从苏木精-伊红染色图像合成多种抗体标记的虚拟多重免疫组化图像&#xff0c;以加速病理组织…

vue 项目自适应 配置 px转rem 的插件postcss-pxtorem

1、安装 npm i postcss-plugin-px2rem --save -dev --force找到 postcss.config.cjs 没有的话就新建一个 module.exports {plugins: {// to edit target browsers: use "browserslist" field in package.jsonautoprefixer: {},"postcss-plugin-px2rem":…

【HTML】元素的分类(块元素、行内元素、行内块元素)

元素的分类 块元素行内元素行内块元素转换 块元素 独占一行&#xff0c;宽度默认为容器的100%&#xff0c;可以设置宽、高、行高、内外边距&#xff1b;布局时&#xff0c;块元素可以包含块元素和行内元素 <div>div</div><p>p</p><h3>h1-h6</…

C++速通LeetCode简单第6题-环形链表

快慢指针真的很好用&#xff01; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:bool hasCycle(ListNode *head) {//快慢指针ListNode* fast…

ClickHouse 24.8 LTS 版本发布说明

本文字数&#xff1a;13885&#xff1b;估计阅读时间&#xff1a;35 分钟 作者&#xff1a;ClickHouse Team 本文在公众号【ClickHouseInc】首发 时间飞逝&#xff0c;又到了新版本发布的时刻&#xff01; 发布概要 本次ClickHouse 24.8 版本包含了19个新功能&#x1f381;、18…

关于 vue/cli 脚手架实现项目编译运行的源码解析

1.vue项目运行命令解析 在日常开发中&#xff0c;vue 项目通过vue-cli-service脚手架包将项目运行起来&#xff0c;常用的命令例如&#xff1a; npm run serve npm run build 上述执行命令实际一般对应为项目中 package.json 文件的 scripts属性中编写的脚本命令&#xff0c;在…

【C++】——string类的模拟实现

目录 一、string模拟实现 1.1构造析构 1.2迭代器 1.3修改 1.4查找 1.5substr 深浅拷贝的区别 1.6比较函数与流插入流提取 二、string类的拷贝 2.1浅拷贝与深拷贝 2.2传统版与现代版区别 2.3写时拷贝&#xff08;了解&#xff09; 三、vs和g下string结构的说明 3.1v…

spring security OAuth2 搭建资源服务器以及授权服务器/jdbc/jwt两种方案

一、认证服务器基于jdbc方式 如果不懂请移步上一篇文章&#xff1a;Spring security OAuth2 授权服务器搭建-CSDN博客 在上一篇文章中&#xff0c;TokenStore的默认实现为 InHenoryTokenStore 即内存存储&#xff0c;对于 CLient 信息&#xff0c;userDetaitsServce 接负责从存…

vue项目如何在js文件中导入assets文件夹下图片

前言&#xff1a; 之前在vuewebpack项目中动态导入图片时&#xff0c;是使用的require()函数。但是在vite中不支持require()函数&#xff0c;换成了new URL()方式。 项目中使用&#xff1a;