066-Maven高级5-私服

5. maven私服

5.1 私服说明

maven仓库分为本地仓库和远程仓库,而远程仓库又分为maven中央仓库、其他远程仓库和私服(私有服务器)。其中,中央仓库是由maven官方提供的,而私服就需要我们自己搭建了。

maven私服就是公司局域网内的maven远程仓库,每个员工的电脑上安装maven软件并且连接maven私服,程序员可以将自己开发的项目打成jar并发布到私服,其它项目组成员就可以从私服下载所依赖的jar。私服还充当一个代理服务器的角色,当私服上没有jar包时会从maven中央仓库自动下载。

nexus 是一个maven仓库管理器(其实就是一个软件),nexus可以充当maven私服,同时nexus还提供强大的仓库管理、构件搜索等功能。

5.2 搭建maven私服

  1. 下载nexus

    https://help.sonatype.com/repomanager2/download/download-archives---repository-manager-oss

  2. 安装nexus

    将下载的压缩包进行解压,进入bin目录

    1559551510928

    打开cmd窗口并进入上面bin目录下,执行nexus.bat install命令安装服务(注意需要以管理员身份运行cmd命令)

    1559551531544

  3. 启动nexus

    经过前面命令已经完成nexus的安装,可以通过如下两种方式启动nexus服务:

    1. 在Windows系统服务中启动nexus
      1559551564441

    2. 在命令行执行nexus.bat start命令启动nexus
      1559551591730

  4. 访问nexus

    启动nexus服务后,访问http://localhost:8081/nexus

    点击右上角LogIn按钮,进行登录。使用默认用户名admin和密码admin123登录系统

    登录成功后点击左侧菜单Repositories可以看到nexus内置的仓库列表(如下图)

    1559551620133

nexus仓库类型

通过前面的仓库列表可以看到,nexus默认内置了很多仓库,这些仓库可以划分为4种类型,每种类型的仓库用于存放特定的jar包,具体说明如下:

  1. hosted,宿主仓库,部署自己的jar到这个类型的仓库,包括Releases和Snapshots两部分,Releases为公司内部发布版本仓库、 Snapshots为公司内部测试版本仓库
  2. proxy,代理仓库,用于代理远程的公共仓库,如maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件
  3. group,仓库组,用来合并多个hosted/proxy仓库,通常我们配置自己的maven连接仓库组
  4. virtual(虚拟):兼容Maven1版本的jar或者插件

1559551723693

nexus仓库类型与安装目录对应关系

1559551752012

5.3 将项目发布到maven私服

maven私服是搭建在公司局域网内的maven仓库,公司内的所有开发团队都可以使用。例如技术研发团队开发了一个基础组件,就可以将这个基础组件打成jar包发布到私服,其他团队成员就可以从私服下载这个jar包到本地仓库并在项目中使用。

将项目发布到maven私服操作步骤如下:

  1. 配置maven的settings.xml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <server>
    <id>releases</id>
    <username>admin</username>
    <password>admin123</password>
    </server>
    <server>
    <id>snapshots</id>
    <username>admin</username>
    <password>admin123</password>
    </server>

    注意:一定要在idea工具中引入的maven的settings.xml文件中配置

  2. 配置项目的pom.xml文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <distributionManagement>
    <repository>
    <id>releases</id>
    <url>http://localhost:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
    <id>snapshots</id>
    <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
    </distributionManagement>
  3. 执行mvn deploy命令
    1559551977984

5.4 从私服下载jar到本地仓库

前面我们已经完成了将本地项目打成jar包发布到maven私服,下面我们就需要从maven私服下载jar包到本地仓库。

具体操作步骤如下:

  1. 在maven的settings.xml文件中配置下载模板

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <profile>
    <id>dev</id>
    <repositories>
    <repository>
    <id>nexus</id>
    <!--仓库地址,即nexus仓库组的地址-->
    <url>
    http://localhost:8081/nexus/content/groups/public/</url>
    <!--是否下载releases构件-->
    <releases>
    <enabled>true</enabled>
    </releases>
    <!--是否下载snapshots构件-->
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </repository>
    </repositories>
    <pluginRepositories>
    <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
    <pluginRepository>
    <id>public</id>
    <name>Public Repositories</name>
    <url>
    http://localhost:8081/nexus/content/groups/public/</url>
    </pluginRepository>
    </pluginRepositories>
    </profile>
  2. 在maven的settings.xml文件中配置激活下载模板

    1
    2
    3
    <activeProfiles>
    <activeProfile>dev</activeProfile>
    </activeProfiles>

066-Maven高级5-私服
https://flepeng.github.io/021-Java-01-course-066-Maven高级5-私服/
作者
Lepeng
发布于
2020年2月2日
许可协议