Maven 搭建私有仓库之Nexus

环境准备

linux版本:CentOS Linux release 7.9.1804

JDK版本:jdk-8u191-linux-i586

Maven版本:apache-maven-3.6.3

Nexus版本:nexus-3.53.0-01

一、配置JDK

1、下载 JDK

JDK版本:jdk-8u191-linux-i586

下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html

Oracle官网将JDK1.8的下载地址分为三个部分:

JDK1.8.202及之前的版本:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html

iShot2023-05-15 09.39.26

JDK1.8.211及以后的版本:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

iShot2023-05-15 09.40.19

其它JDK版本的下载地址:https://www.oracle.com/java/technologies/downloads/archive/

iShot2023-05-15 09.41.06

2、CentOS卸载系统自带的OpenJDK
1、查看包含java的信息
[root@VM-8-11-centos ~]# rpm -qa | grep java

二、配置Maven

Maven版本:apache-maven-3.6.3
下载地址:https://dlcdn.apache.org/maven/

iShot2023-05-15 09.43.52

进入之后选择需要下载的Maven版本:

iShot2023-05-15 09.45.04

Nexus是什么

1、有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库。而且自己maven私服更容易维护,由于在内网,公司的开发人员从maven私服迁出jar到本地仓库更快。
2、当需要上传第三方或者自己的jar到maven仓库时,就需要私服了。

一、Nexus安装

JDK版本:jdk-8u191-linux-i586

下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8-archive-downloads.html

Maven版本:apache-maven-3.6.3
下载地址:https://dlcdn.apache.org/maven/
Nexus版本:nexus-3.53.0-01
下载地址:https://www.sonatype.com/download-oss-sonatype

输入相关信息后,点击下载,会跳转到下载页面

iShot2023-05-12 15.00.02

根据操作系统的不同自行选择下载。本人希望将 Nexus 部署在 Linux 机器,所以选用的是 Unix 版本,默认下载的是最新的版本。

iShot2023-05-12 15.00.27

会自动下载,客人呢呢个有些时候因为网络波动导致没有下载请求。这种情况下,点击下面圈起来的位置,

iShot2023-05-12 15.05.42

另外 Check out the Nexus Book 这一块是 Nexus 的官方文档。可以进行查看操作。

  • 另外,历史版本也在这里可以找到。

iShot2023-05-12 15.31.55

这里,如果想通过命令方式直接下载(比如用脚本安装),可以在官方历史发布版本页面 (opens new window)中找到合适版本,然后执行以下命令:

[root@VM-8-11-centos ~]# wget https://download.sonatype.com/nexus/3/nexus-3.53.0-01-unix.tar.gz /usr/local/Nexus    #这里我是直接下载到了/usr/local/Nexus目录下


[root@VM-8-11-centos ~]# cd /usr/local/Nexus
[root@VM-8-11-centos Nexus]# tar -xf nexus-3.53.0-01-unix.tar
[root@VM-8-11-centos Nexus]# ll
total 228488
drwxr-xr-x 10 root root      4096 May 15 09:05 nexus-3.53.0-01
-rw-r--r--  1 root root 233963520 May 12 16:03 nexus-3.53.0-01-unix.tar
drwxr-xr-x  3 root root      4096 May 15 09:05 sonatype-work

如果需要安装部署的服务器无联通网络条件,可先下载完成后再上传到服务器中。

解压后,有两个目录:

  • nexus-3.53.0-01 - 包含了 Nexus 运行所需要的文件。是 Nexus 运行必须的。
  • sonatype-work - 包含了 Nexus 生成的配置文件、日志文件、仓库文件等。当我们需要备份 Nexus 的时候默认备份此目录即可。
1、配置Maven

将下载好的maven上传到服务器上(建议软件都安装在/usr/local目录下),下面解压maven

[root@VM-8-11-centos local]# tar -zxvf apache-maven-3.6.3-bin.tar.gz 

# 配置Maven环境变量
vim /etc/profile

#maven
 
MAVEN_HOME=/usr/local/apache-maven-3.6.0
 
export MAVEN_HOME
 
export PATH=${PATH}:${MAVEN_HOME}/bin

退出后
source /etc/profile
让配置文件重新生效

查看Maven环境变量配置是否生效:

img

3、部署Nexus
解压Nexus
\tar -zxvf nexus-3.14.0-04-unix.tar.gz

启动

cd /usr/local/nexus-3.14.0-04/bin
./nexus start

img

查看执行nexus的使用方法

./nexus console

img

查看Nexus运行状态

./nexus status

img

到此,我们的nexus就搭建成功了

二、查看Nexus

1、访问Nexus

浏览器打开刚部署的Nexus服务,Nexus默认端口是8081,默认用户名/密码:admin/admin123

img

2、修改Nexus默认端口 新版本的Nexus的配置文件是在Nexus根目录的/etc下的nexus-default.properties
img 要修改Nexus的端口,就修改配置文件中的application-port,然后重启Nexus服务。

Nexus3功能介绍

1、Browse Server Content

img

1.1、Search 这个就是类似Maven仓库上的搜索功能,就是从私服上查找是否有哪些包。 注意:在Search这级是支持模糊搜索的 img
1.2、Browse img
1.4、Upload
顾名思义就是上传jar包到私服中,可以选择其中一个hosted仓库。

注意:通过页面直接上传的方式只是上传了jar包,若这个jar通过Maven依赖了其他jar,那其他项目在下载这个jar时无法取得它的依赖。所以,除非这个jar没有任何依赖,否则还是推荐通过命令行或者IDE的方式上传jar包,这样才会把pom一并上传。

img

2、Server Adminstration And configuration

看到这选项是要进行登录的,在右上角点击“Sign In”的登录按钮,输入admin/admin123,登录成功之后,即可看到此功能,如图所示:
img

2.1、Repository
2.1.1 Blob Stores 文件存储的地方,创建一个目录的话,对应文件系统的一个目录,如图所示我已经创建了两个额外的存储块: img

img

2.1.2 Repositories 仓库分为三种:Proxy、hosted、group
  • Proxy
    这里就是代理的意思,代理中央Maven仓库,当PC访问中央库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
    这样的优势只要其中一个人从中央库下来了,以后大家都是从Nexus私服上进行下来,私服一般部署在内网,这样大大节约的宽带。

创建Proxy的具体步骤

1、点击左上角的“Create Repositories”按钮

2、选择要创建的类型
img

3、填写详细信息

Name:就是为代理起个名字,我取名为“aliyun”

Remote Storage: 代理的地址,Maven的地址为: https://repo1.maven.org/maven2/,但Maven官方的代理访问速度太慢了,使用阿里云的Maven代理更好,http://maven.aliyun.com/nexus/content/groups/public

Blob Store: 选择代理下载包的存放路径,我选择的是之前创建的一个。
img

  • Hosted

Hosted是宿主机的意思,用于将第三方的Jar或者我们自己的jar放到私服上。

Hosted有三种方式,Releases、SNAPSHOT、Mixed

Releases: 一般是已经发布的Jar包

Snapshot: 未发布的版本

Mixed:混合的

Hosted的创建和Proxy类似,类型需选择maven2(hosted)。

注意:Deployment Pollcy,我们需要把策略改成“Allow redeploy”,以允许重复发布覆盖同版本的jar包。

img

  • Group

能把多个仓库合成一个仓库来使用,把上几步创建的代理仓库和宿主仓库都加入到“maven-public”仓库组中:
img

  • Security
    包含用户、角色、权限的配置。

  • Support
    包含日志及数据分析。

  • System
    包含API(Nexus这个API文档貌似是用swagger做的)、邮件服务器,设置调度任务等。

Maven+Nexus代理中央仓库

搭建了Nexus作为Maven私服,也介绍了Nexus的使用方法。

下面说说如何将创建的代理中央仓库融入实际项目中。有下面两种方式,选其一即可。

1、配置Maven的settings.xml

在idea、eclipse等IDE中配置好maven的settings文件路径后,在mirrors标签中增加一个mirror

<mirror>
    <id>nexus-aliyun</id>
    <mirrorOf>*</mirrorOf>
    <name>Nexus aliyun</name>
    <url>http://192.168.2.109:8888/repository/aliyun/</url>
</mirror>

url中填入之前在Nexus中自己创建的代理中央仓库

img

2、配置项目中的pom.xml

在pom文件中增加一个repository,注意id和name需和代理中央仓库的Name一致。

<repositories>
	<repository>
		<id>aliyun</id>
		<name>aliyun</name>
		<url>http://192.168.2.109:8888/repository/aliyun/</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
		<releases>
			<enabled>true</enabled>
		</releases>
	</repository>
</repositories>

上面的配置方法选择其中一种即可。

如此一来,项目在下载jar包时会从私服的代理中央仓库中获取,如果代理仓库没有该jar,就会去代理仓库配置的远程仓库中下载到私服中,再从私服下载到项目本地。

Nexus上传第三方jar包

上传含Maven依赖的jar包和源码包到Nexus并下载引入到其他项目中
上传jar包的方式有三种:Nexus页面直接上传、命令行上传、在IDE集成开发工具中上传。

本文介绍如何在idea中上传和下载jar包,这个jar包还通过Maven的pom依赖了其他jar包。

上传
1.1、配置settings.xml

在maven根目录的conf下的settings.xml配置文件中加入server节点(需确保idea中的maven配置指向了这个settings.xml)

<server>
  <id>dev</id>
  <username>admin</username>
  <password>admin123</password>
</server>

username和password是Nexus的账号,我添加的是Nexus默认的admin账号,你也可以再Nexus创建一个账号用于上传。

1.2、配置pom.xml

需上传的项目的pom.xml中加入

<distributionManagement>
    <!-- 用于上传的仓库 -->
    <repository>
        <!-- 这里的id需要和settings.xml中的server的id一致 -->
        <id>dev</id>
        <name>nexus-third</name>
        <!-- third是一个hosted类型的仓库,用于存放第三方或自己的jar包 -->
        <url>http://192.168.2.109:8888/repository/third/</url>
    </repository>
</distributionManagement>
 
<build>
    <plugins>
        <!-- 要将源码放上去,需要加入这个插件 -->
        <plugin>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <attach>true</attach>
            </configuration>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

其中的url是上面在Nexus3功能介绍一文中创建的hosted仓库
img

1.3、在idea中上传jar

在idea中运行mvn deploy
img

在Nexus中就可以看到这个jar包了,里面还包含了pom文件,这样项目在引入这个jar时会自动引入它所依赖的其他jar包,里面还有源码jar包。
img

2、在其他项目中引入jar包
2.1、在项目的pom.xml中加入jar包的依赖
<dependency>
	<groupId>com.secusoft</groupId>
	<artifactId>common</artifactId>
	<version>1.0.6</version>
</dependency>
2.2、在项目的pom.xml中加入增加一个repository

注意:id和name和代理仓库的Name一致

<repositories>
	<repository>
		<id>maven-public</id>
		<name>maven-public</name>
		<url>http://192.168.2.109:8888/repository/maven-public/</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
		<releases>
			<enabled>true</enabled>
		</releases>
	</repository>
</repositories>

上面用到的仓库是个group仓库,在Nexus3功能介绍一文中就已经添加了我创建的proxy仓库"aliyun"和hosted仓库"third",这样远程仓库的jar包、第三方或自己的jar包就都可以下载了。

img

通过上面的步骤,项目中已经成功引入了该jar包,并引入了它所依赖的其他jar包

img

打开jar包中的某个类,显示如下
img

可见已经下载好了源码了。

至此,上传jar包和源码包到私服并在下载项目中的过程就全部讲解完了!

导入第三方Jar包到Nexus私服

公司里面有自己的公共代码库,如果希望交给Maven进行管理,可以搭建Nexus服务器,将公司的公共代码库的代码打成jar包,然后上传到Nexus私服服务器上,项目组的成员就可以在Maven项目中通过添加依赖的方式把公司公共库的jar包给关联到项目中.

在Nexus2的版本中是提供了服务器端可视化界面支持上传第三方Jar包的,但是Nexus3的版本中好像已经把该功能给阉割了.只能手动的通过命令行的方式将第三方的Jar包导入到私服中.其实也不难,比起Nexus2来说稍显复杂些.具体步骤如下.

1.首先在Nexus服务器配置了存放第三方Jar包的本地仓库hosted,如果已经配置,直接跳到第2步,如果没有配置,按如下配置,

1.1登陆Nexus服务器,创建仓库 Create repository

img

1.2选择仓库类型,选择maven2(hosted),本地仓库:

img

1.3给仓库起个名字,然后点击最下面的(图中没显示)的Create repository 按钮

img

1.4保存之后,在点击进入这个本地仓库,拿到该本地仓库的地址: http://localhost:8081/repository/3rd_part/ 待会后面执行命令的时候需要把localhost换成Nexus的服务器地址.

img

1.5去到仓库组maven-public中添加刚刚创建的本地仓库3rd_part:

img

接着将本地仓库3rd_part 加入到仓库组中:

img

到这一步就已经在Nexus服务器添加存放第三方Jar包的本地仓库

2.如下操作在项目组成员电脑操作都可以的.

  1. 找到.m2/setting.xml 或者 maven安装目录/conf/setting.xml 文件,找到里面的 节点,添加如下配置:
<server>   
    <id>thirdparty</id>   
    <username>admin</username>
    <password>admin123</password>   
</server>

id:待会输入命令的时候需要用到
username:表示Nexus服务器的登陆账号
password:表示Nexus服务器的登陆密码

  1. 打开CMD命令控制台,输入如下命令:
mvn deploy:deploy-file -DgroupId=cn.wolfcode -DartifactId=p2p -Dversion=1.0.0 -Dpackaging=jar -Dfile=D:\test\p2p.jar -Durl=http://192.168.142.128:8081/repository/3rd_part/ -DrepositoryId=thirdparty

DgroupId、DartifactId、Dversion:构成了该jar包在pom.xml的坐标,自己起名字也是可以的.
Dpackaging:表示打包类型.
Dfile:表示需要上传的jar包的绝对路径.
Durl:私服上第三方仓库的地址,打开nexus——>repositories菜单,可以看到该路径。
DrepositoryId:服务器的表示id,就是我们在setting.xml文件中配置的serverId。

执行成功表示已经上传到Nexus私服了

  1. 项目组成员就可以在自己项目中的pom.xml文件中添加如下的依赖:
<dependency>
    <groupId>cn.wolfcode</groupId>
    <artifactId>p2p</artifactId>
    <version>1.0.0</version>
</dependency>

该Jar包就自动的关联到项目中了.

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值