项目开发中多个开发版本同时进行,若涉及基础模块改动通常对模块打多个版本分支,并将pom文件version写死为git分支名称,业务上线时需要时刻注意master分支version被业务分支version覆盖问题。若每个分支都以${git.branch}变量为版本号,则会彻底解决上线分支版本背覆盖的问题。
例如:项目1、项目2都依赖db模块,现在项目1新增业务1需对数据库进行表新增或结构改动,同时进行的项目2中业务2也会对数据库进行改动。为了避免两个业务开发中相互影响,我们将数据库打两个分支b1用于业务1,b2用于业务2。b1的pom文件版本为b1,b2的pom文件版本为b2。当业务上线时都需要master分支合并,且不能修改master的pom文件master值。
git-commit-id-plugin插件可以解决项目在打包时使用git分支名称作为jar名称
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.deon</groupId>
<artifactId>db</artifactId>
<version>${git.branch}-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>3.0.1</version>
</plugin>
</plugins>
</build>
若当前分支为b1,mvn package结果为db-b1-SNAPSHOT.jar, mvn install结果为db-${git.branch}-SNAPSHOT.jar;
为了解决install、deploy阶段没法使用${git.branch}变量来发布项目到maven仓库问题,我们需开发一个新的maven-plugin。插件代码以及使用方法见 gitee.com/deon/git-br…