Maven私服从搭建到使用

前言

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。
使用Maven的好处有下
1、jar包下载速度比中央仓库快

2、有些jar包由于版权原因,maven中央仓库没有,比如oracle JDBC驱动。另外也会有一些项目中用到的比较老的开源jar包,中央仓库也没用

3、公司自己开发的jar包并不开源,不能上传到maven中央仓库,只能部署到私服上面

4、便于进行统一jar包管理

5、可在此基础上搭建自动化部署服务器:

1)Maven构建和释放项目;

2)SubVersion源代码库,管理源代码;

3)远程存储库管理器(Jfrog/ Nexus)来管理项目的二进制文件。

使用Nexus搭建maven私服

1.Nexus下载

使用Nexus Repository Manager OSS 3.x
地址:https://www.sonatype.com/download-oss-sonatype

Nexus Repository Manager 2.x
地址:https://help.sonatype.com/repomanager2/download

Pro版本 需要收费才能使用

2.安装

解压

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

进入目录/bin,输入./nexus,会显示命令

./nexus
Usage: ./nexus { console | start | stop | restart | status | dump }

默认是8081端口,配置文件:etc/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

./bin/nexus start

查看运行状态

./bin/nexus status 

介绍Nexus可试图界面

配置后访问:http://服务器地址:8081
默认账号密码:admin / admin123
在这里插入图片描述
查看所有仓库
在这里插入图片描述

Repository 介绍
name:

Central:该仓库代理Maven的中央仓库,策略为Release,只会下载和缓存中央仓库中的发布版本构件。

Public:仓库组,将所有策略为Release的仓库聚合并通过一致的地址提供服务。

Release:策略为Release的宿主类型仓库,用来部署组织内部的发布版本构件。

Snapshots:策略为Snapshots的宿主类型仓库,用来部署组织内部的快照版本构件,也就是未发布版本。

neget 是 .net 使用的仓库,这里可以忽略

type:

group(仓库组类型):又叫组仓库,用于方便开发人员自己设定的仓库(能够组合多个仓库为一个地址提供服务)

hosted(宿主类型):内部项目的发布仓库(内部开发人员,发布上去存放的仓库)

proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote
Storage Location属性的值即被代理的远程仓库的路径)

format

maven2是JAVA仓库
nuget是.net仓库,在此忽略

status

确认是 online / oneline Ready To connect 即可

创建私有仓库并在项目中使用

创建私有Maven仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
大家根据需求选择对应类型很好区分,这里我们项目组要搭建自己的私有仓库所以选择hosted
在这里插入图片描述
加入到我们私服的公共库里,这样你需要的包可以在公共库找到,找不到会在你指定包里找。

Maven私服的使用
1.setting.xml文件配置

在 ${maven}/conf/setting.xml,配置如下内容:

认证信息:

 <!--设置私库认证信息-->
  <servers>
    <server>
      <id>maven-releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>maven-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  </servers>

添加镜像:

<mirrors>
    <mirror>
      <id>maven-releases</id>
      <name>maven-releases</name>
      <url>http://192.168.120.60:8081/repository/maven-releases/</url>
      <mirrorOf>maven-releases</mirrorOf> 
    </mirror>
    <mirror>
      <id>maven-snapshots</id>
      <name>maven-snapshots</name>
      <url>http://192.168.120.60:8081/repository/maven-snapshots/</url>
      <mirrorOf>maven-snapshots</mirrorOf> 
    </mirror>
 </mirrors>   
2.maven pom配置

注意 ID 与 setting.xml 中 server id 一致

<!-- 指定MAVEN私服(远程仓库) -->
	<repositories>
		<repository>
			<id>maven-public</id>
			<name>maven-public</name>
			<url>http://192.168.120.60:8081/repository/maven-public/</url>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
</repositories>
	<!-- 你上传的项目项目工具包 -->
		<dependency>
			<groupId>com.dy</groupId>
			<artifactId>smart_city_tools</artifactId>
			<version>1.0.4-SNAPSHOT</version>
		</dependency>

这样你项目需要引用的第三方包就能引过来了

第三方包上传到私服

在pom.xml文件添加:

<!-- 要部署本项目到MAVEN私服(远程仓库)所要指定的私服地址 -->
    <!-- 注意:需要本地仓库配置远程仓库的仓库ID以及用户名和密码 -->
    <distributionManagement>
        <repository>
            <id>maven-releases</id>
            <name>Packaging Release Repository</name>
            <url>http://192.168.120.60:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <name>Packaging Snapshot Repository</name>
            <url>http://192.168.120.60:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

至于是发布到仓库是maven-releases还是maven-snapshots仓库里你需要在pom.xml中指定如图:

在这里插入图片描述
对应到我们私有仓库如图所示:
在这里插入图片描述
首先安装到本地仓库
在这里插入图片描述
再发布到远程仓库
在这里插入图片描述

至于deploy和deploy-file的区别可以参照:
使用Nexus和mvn deploy:deploy-file上传文件到中央库(Maven仓库).
这样我们就可以完美的把当前项目作为包上传到第三方仓库,方便其他项目的引用了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值