maven deploy命令的含义
maven deploy命令是将你负责的模块发布到你配置的仓库位置。
多模块开发中使用deploy命令
配置仓库位置,一般公司都会搭建自己的公司私服,用于加速获取jar以及管理公司的一些技术沉淀工具包之类的
<distributionManagement>
<repository>
<!--稳定版本不会频繁修改的jar的存储位置-->
<id>maven-release</id>
<url>http://XXXX/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<!--快照版本-->
<id>maven-snapshots</id>
<url>http://XXXX/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
Maven中的仓库分为两种,Snapshot快照仓库和Release发布仓库。Snapshot快照仓库用于保存开发过程中的不稳定版本,Release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom.xml文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写),如下所示:
<groupId>com.xupp</groupId>
<artifactId>test</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>jar</packaging>
delopy会更具你定义的版本发布到不同的位置。
多人开发依赖和deploy的使用
2020年微服务现在已经是一个公司基本必选的服务架构了,一个项目会被分成多个,每一个人会负责一个模块的开发,有些人就会分到公共组件或者公共api的开发。
比如现在a开发一个公共的base包,定义如下:
<groupId>com.a</groupId>
<artifactId>base</artifactId>
<version>0.1-SNAPSHOT</version>
<packaging>jar</packaging>
上面定义程快照版本,每一次的deploy都会把当前的时间作为版本的一部分,如打包上去的可能是下面这样的jar,存放在私服的Snapshot快照仓库位置。
base-0.0.1-20200903.060612-43.jar(版本的后面加上了当前的时间)
现在b模块开发其中系统中的一个业务模块,那么它需要使用这个base模块中的一些工具类,他只要在pom做如下定义
<dependency>
<groupId>com.a</groupId>
<artifactId>base</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
那么每一次base有更新进行deploy,只要使用的地方重新reimport进行拉取,会在本地仓库位置拉取快照仓库最新的快照版本。并且进行使用。具体的表现如下: