maven项目打包、发布时使用当前git分支名称作为版本号

1,092 阅读1分钟

项目开发中多个开发版本同时进行,若涉及基础模块改动通常对模块打多个版本分支,并将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…