maven打包提交到远端仓库(deploy)

举报
张尧 发表于 2022/12/06 23:03:42 2022/12/06
【摘要】 maven在编译打包完后生成的制品包如何让别人依赖使用呢?可以通过deploy发布到远端maven仓库,供其他人使用.此处的远端maven仓库可以是自己搭建的nexus私服库,也可以是云效制品库、maven中央仓库等公有库,区别是maven中央仓库这类公有库对制品包有审核流程,审核通过后才能发布至maven中央仓库.今天详细记录下deploy的设置和操作步骤.前置环境maven环境 最新版本...

maven在编译打包完后生成的制品包如何让别人依赖使用呢?

可以通过deploy发布到远端maven仓库,供其他人使用.

此处的远端maven仓库可以是自己搭建的nexus私服库,也可以是云效制品库、maven中央仓库等公有库,区别是maven中央仓库这类公有库对制品包有审核流程,审核通过后才能发布至maven中央仓库.

今天详细记录下deploy的设置和操作步骤.

前置环境

  1. maven环境 最新版本3.8.6 官网:https://maven.apache.org/
  2. idea环境 便于使用idea进行deploy操作(使用命令行也可以,非必须)
  3. maven项目,借助idea新建一个maven项目即可

仓库分类

一般来说,远端仓库分为两类:

  1. release库 用于存放已经通过测试,不会在变动的稳定版本,可以用于发行的制品
  2. snapshots库 快照库,用于存放正在开发阶段,变动频繁,不稳定的版本.

配置

配置主要分为两部分:

  1. maven环境的settings.xml文件,配置对应远端maven仓库的id/账号/密码
  2. maven项目内的pom文件,添加远端仓库的路径.


1. settings.xml配置

安装完maven后,会自动生成一个默认的settings.xml文件

我们需要关注其中的几个标签:

1.1 servers

servers用于配置远端maven仓库的账号密码,如下:

<servers>
  <server>
    <id>唯一id,一般为站点</id>
   	<username>用户名</username>
    <password>密码</password>
  </server>
</servers>

如果远端仓库有多个,则可以配置多个远端仓库,即多个server

均包含在servers标签内


1.2 profiles

profiles用于设置不同环境下的属性,比如开发环境/测试环境/生产环境,不同的环境下需要打包发布到不同的仓库,这个时候就可以通过profiles来实现.

首先在profiles中定义多个环境的属性:

<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <repository.id>仓库id 需要与servers中远端仓库id保持一致</repository.id>  
      <repository.name>仓库名称 随意</repository.name>  
      <repository.url>仓库地址</repository.url>  
    </properties>
  </profile>
  <profile>
    <id>test</id>
    <properties>
      <repository.id>仓库id 需要与servers中远端仓库id保持一致</repository.id>  
      <repository.name>仓库名称 随意</repository.name>  
      <repository.url>仓库地址</repository.url>  
    </properties>
  </profile>
</profilse>

可以指定多个环境


1.3 激活配置

profiles中的环境配置可以通过多种方式指定.

  1. settings.xml文件中的activeProfiles标签
<activeProfiles>
    <activeProfile>dev</activeProfile>
</activeProfiles>
  1. profiles中profile可以通过activation标签进行有条件激活,比如jdk1.8时使用某个profile如下:
<profiles>
  <profile>
    <id>jdk1.8</id>
    <activation>
      <jdk>1.8</jdk>
    </activation>
    <properties>
      <repository.id>仓库id 需要与servers中远端仓库id保持一致</repository.id>  
      <repository.name>仓库名称 随意</repository.name>  
      <repository.url>仓库地址</repository.url>  
    </properties>
  </profile>
</profiles>
  1. 通过maven 的-P<profile的id>参数指定
maven clean package -Ptest

如上: 指定profile为test,激活test环境的属性.


2. 项目配置

maven项目的配置主要依赖pom文件中的一个标签:

distributionManagement

如下:

<distributionManagement>
    <repository>
        <id>release仓库id,注意与settings.xml文件中的servers中的id保持一致</id>
        <name>名字 随意</name>
        <url>release仓库路径</url>
    </repository>
    <snapshotRepository>
        <id>snapshot仓库id,注意与settings.xml文件中的servers中的id保持一致</id>
        <name>名字 随意</name>
        <url>snapshot仓库路径</url>
    </snapshotRepository>
</distributionManagement>

最重要的就是仓库的id与settings.xml文件中的servers中的仓库id保持一致,因为打包上传时需要账号密码,均从server中获取.

maven deploy时会通过项目版本号中是否携带SNAPSHOT来判断将制品包上传到release仓库还是snapshot仓库.

因此,我们可以发现,项目创建后的版本号默认都为1.0-SNAPSHOT,即为开发版本.

<groupId>org.example</groupId>
<artifactId>zy_facebody</artifactId>
<version>1.0-SNAPSHOT</version>


打包

项目配置完成后,可以通过命令行直接打包

maven clean deploy 


也可以借助idea工具打包,其实底层还是调用的maven命令

总结

梳理maven deploy的配置信息,加深maven生命周期的理解.

了解maven配置文件中的标签具有的含义,不求倒背如流,需要知道有这样的功能.

有道无术术尚可求,有术无道不可求也~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。