maven打包提交到远端仓库(deploy)
maven在编译打包完后生成的制品包如何让别人依赖使用呢?
可以通过deploy发布到远端maven仓库,供其他人使用.
此处的远端maven仓库可以是自己搭建的nexus私服库,也可以是云效制品库、maven中央仓库等公有库,区别是maven中央仓库这类公有库对制品包有审核流程,审核通过后才能发布至maven中央仓库.
今天详细记录下deploy的设置和操作步骤.
前置环境
- maven环境 最新版本3.8.6 官网:https://maven.apache.org/
- idea环境 便于使用idea进行deploy操作(使用命令行也可以,非必须)
- maven项目,借助idea新建一个maven项目即可
仓库分类
一般来说,远端仓库分为两类:
- release库 用于存放已经通过测试,不会在变动的稳定版本,可以用于发行的制品
- snapshots库 快照库,用于存放正在开发阶段,变动频繁,不稳定的版本.
配置
配置主要分为两部分:
- maven环境的settings.xml文件,配置对应远端maven仓库的id/账号/密码
- 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中的环境配置可以通过多种方式指定.
- settings.xml文件中的activeProfiles标签
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
- 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>
- 通过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配置文件中的标签具有的含义,不求倒背如流,需要知道有这样的功能.
有道无术术尚可求,有术无道不可求也~
- 点赞
- 收藏
- 关注作者
评论(0)