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

如何在GitHub同一Java Maven项目的master与develop分支生成两个可用包?

为Java Maven项目的master和develop分支分别生成GitHub Packages包的实现方法

核心思路是通过分支专属的版本号标识区分两个分支的包,配合GitHub Actions自动完成构建发布,确保两个分支的包独立可用。

1. 配置版本号规则

给master和develop分支的包设置不同的版本后缀,比如:

  • master分支用正式版本号(如1.0.0)
  • develop分支用带标识的版本号(如1.0.0-develop或1.0.0-SNAPSHOT)

你可以通过Maven命令行参数动态覆盖版本,无需硬改pom.xml:

# master分支发布正式版
mvn deploy -Dproject.version=1.0.0

# develop分支发布开发版
mvn deploy -Dproject.version=1.0.0-develop

如果想在pom.xml里做更灵活的配置,可以用Maven profiles:

<profiles>
  <profile>
    <id>master</id>
    <activation>
      <property>
        <name>branch</name>
        <value>master</value>
      </property>
    </activation>
    <properties>
      <project.version>1.0.0</project.version>
    </properties>
  </profile>
  <profile>
    <id>develop</id>
    <activation>
      <property>
        <name>branch</name>
        <value>develop</value>
      </property>
    </activation>
    <properties>
      <project.version>1.0.0-develop</project.version>
    </properties>
  </profile>
</profiles>

构建时指定profile:mvn deploy -Pmaster

2. 用GitHub Actions自动发布

创建.github/workflows/maven-publish.yml,实现分支推送时自动构建发布:

name: 自动发布Maven包

on:
  push:
    branches: [ master, develop ]

jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: 配置JDK环境
        uses: actions/setup-java@v4
        with:
          java-version: '17' # 替换为你的项目JDK版本
          distribution: 'temurin'
          server-id: github
          server-username: MAVEN_USERNAME
          server-password: MAVEN_PASSWORD
      
      - name: 生成版本后缀
        id: version-suffix
        run: |
          if [ "${{ github.ref }}" = "refs/heads/master" ]; then
            echo "suffix=" >> $GITHUB_OUTPUT
          else
            echo "suffix=-develop" >> $GITHUB_OUTPUT
          fi
      
      - name: 发布到GitHub Packages
        run: mvn deploy -DskipTests -Dproject.version=1.0.0${{ steps.version-suffix.outputs.suffix }}
        env:
          MAVEN_USERNAME: ${{ github.actor }}
          MAVEN_PASSWORD: ${{ secrets.GITHUB_TOKEN }}

这个工作流会在master或develop分支有代码推送时自动触发,根据分支生成对应版本号,跳过测试后发布到GitHub Packages。

3. 确保包可访问

  • 进入GitHub仓库的「Packages」页面,检查包的可见性:如果需要公开访问,设置为「Public」;私有仓库则配置好访问权限,允许目标用户/团队查看下载。
  • 其他项目引用时,直接指定对应版本号即可:
    <!-- 引用master分支的正式包 -->
    <dependency>
      <groupId>你的GroupId</groupId>
      <artifactId>你的ArtifactId</artifactId>
      <version>1.0.0</version>
    </dependency>
    
    <!-- 引用develop分支的开发包 -->
    <dependency>
      <groupId>你的GroupId</groupId>
      <artifactId>你的ArtifactId</artifactId>
      <version>1.0.0-develop</version>
    </dependency>
    

可选:用快照版本管理开发分支

如果develop分支是持续迭代的,可以把版本后缀设为-SNAPSHOT,Maven会自动识别为快照包,支持自动拉取最新构建版本。只需把Actions里的suffix=-develop改成suffix=-SNAPSHOT即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:35:49