You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Maven buildnumber-plugin仅在特定构建中递增构建号?

解决maven-buildnumber-plugin仅在Jenkins构建时递增版本号的方案

要实现只让Jenkins构建触发版本号递增、本地调试不增长的需求,核心思路是利用Jenkins构建时自动注入的环境变量,结合Maven的配置特性来控制插件的更新开关。下面给你两种实用的解决方案:

方案一:用Maven Profile区分构建环境

通过定义两个Profile,分别对应Jenkins构建和本地构建,自动根据环境激活对应的配置:

<profiles>
    <!-- Jenkins构建专属Profile -->
    <profile>
        <id>jenkins-build</id>
        <!-- 检测到Jenkins自带的BUILD_NUMBER变量时自动激活 -->
        <activation>
            <property>
                <name>env.BUILD_NUMBER</name>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>1.4</version>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>create</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <doCheck>true</doCheck>
                        <!-- Jenkins构建时开启版本号更新 -->
                        <doUpdate>true</doUpdate>
                        <format>{0,number}</format>
                        <items>
                            <item>buildNumber</item>
                        </items>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

    <!-- 本地构建默认Profile -->
    <profile>
        <id>local-build</id>
        <!-- 默认激活,除非Jenkins环境变量存在 -->
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>buildnumber-maven-plugin</artifactId>
                    <version>1.4</version>
                    <executions>
                        <execution>
                            <phase>validate</phase>
                            <goals>
                                <goal>create</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <doCheck>true</doCheck>
                        <!-- 本地构建时关闭版本号更新,避免增长 -->
                        <doUpdate>false</doUpdate>
                        <format>{0,number}</format>
                        <items>
                            <item>buildNumber</item>
                        </items>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

逻辑说明

  • 本地构建:默认激活local-build,doUpdate=false,插件只会读取当前构建号,不会修改版本库中的编号,完全不影响本地调试。
  • Jenkins构建:Jenkins会自动设置BUILD_NUMBER环境变量,此时jenkins-build自动激活,doUpdate=true,正常执行版本号递增和更新操作。

方案二:直接在插件配置中用条件判断

如果觉得Profile太繁琐,可以直接用Maven的属性默认值语法,一行配置搞定:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <doCheck>true</doCheck>
        <!-- 只有Jenkins环境下(存在BUILD_NUMBER)才开启更新,本地默认false -->
        <doUpdate>${env.BUILD_NUMBER:true}</doUpdate>
        <format>{0,number}</format>
        <items>
            <item>buildNumber</item>
        </items>
    </configuration>
</plugin>

逻辑说明

利用Maven的${属性名:默认值}语法:当Jenkins环境中存在BUILD_NUMBER时,doUpdate会被解析为true;本地构建时没有这个变量,自动使用默认值false,实现环境区分。

额外注意事项

  • 确保Jenkins的Maven构建任务允许环境变量传递到Maven进程(默认是开启的,特殊配置需要检查)。
  • 如果你的Jenkins没有自动生成BUILD_NUMBER,也可以手动在构建任务中添加自定义环境变量(比如IS_JENKINS_BUILD=true),然后把配置中的env.BUILD_NUMBER换成这个自定义变量即可。

内容的提问来源于stack exchange,提问作者Xtroce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:55:35