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

如何基于Git分支及环境配置生成不同命名的Jar包?

根据Git分支生成对应环境的Jar包及自定义settings.gradle方案

首先明确:可以按环境自定义settings.gradle文件,不过结合Git分支生成不同命名的Jar包,更推荐把分支检测和Jar命名逻辑结合起来,下面给你具体实现方案:

1. 在settings.gradle中根据分支自动设置项目名称

settings.gradle支持执行Groovy代码,你可以直接在这里获取当前Git分支,然后动态修改项目名称,后续构建出的Jar包会自动沿用这个名称。修改后的settings.gradle代码如下:

def getGitBranch() {
    def process = "git rev-parse --abbrev-ref HEAD".execute()
    process.waitFor()
    return process.text.trim()
}

// 根据分支映射环境后缀,可根据你的分支规则调整
def branchName = getGitBranch()
def envSuffix = branchName == "main" ? "prod" : "dev" 

rootProject.name = "weather-service-${envSuffix}"

这样,当你在dev分支构建时,项目名称会变成weather-service-dev,最终生成的Jar包就是weather-service-dev.jar;main分支则生成weather-service-prod.jar。

2. 更灵活的方式:在build.gradle中配置Jar命名

如果需要更精细控制Jar包的命名规则,直接在build.gradle的Jar任务里配置更合适(毕竟Jar构建属于构建阶段的职责,比settings.gradle的初始化配置更贴合场景)。示例代码:

jar {
    // 获取当前Git分支
    def branchName = "git rev-parse --abbrev-ref HEAD".execute().text.trim()
    // 分支到环境的映射,可自定义规则(比如feature分支也用dev后缀)
    def envSuffix = branchName in ["main", "master"] ? "prod" : "dev"
    // 设置Jar包文件名
    archiveFileName = "weather-service-${envSuffix}.jar"
}

3. 关于之前environmentName配置的补充

你之前尝试的environmentName没解决问题,大概率是没把分支和这个配置关联起来。可以通过构建时传递参数的方式实现:

  • 构建时手动指定环境:
    ./gradlew build -PenvironmentName=dev
    
  • 然后在build.gradle中读取这个参数来设置Jar名称:
    def envSuffix = project.findProperty("environmentName") ?: "dev" // 默认dev
    jar {
        archiveFileName = "weather-service-${envSuffix}.jar"
    }
    

如果是在CI/CD环境中构建,还可以配置工具自动根据分支传递environmentName参数,实现完全自动化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:12:24