Skip to content

使用GitHub Action自动发布Spring Boot的jar包

Published: at 09:09 AMSuggest Changes

Table of contents

Open Table of contents

准备

  1. Spring Boot的可以执行jar包叫bootJar,用于依赖的Plain jar叫jar
  2. 在项目设置中添加两个Actions secrets
USERNAME:GitHub用户名
GITHUB_TOKEN:GitHub的token,有读写删packages的权限

Gradle Config

plugins {
    ...
    id 'maven-publish'
}

...

bootJar {
    enabled = false
    archiveClassifier = 'boot'
}

jar {
    enabled = true
    archiveClassifier = ''
}

publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/xutingzhou/gradle-lib-demo")
            credentials {
                username = System.getenv("USERNAME")
                password = System.getenv("GITHUB_TOKEN")
            }
        }
    }
    publications {
        gpr(MavenPublication) {
            artifact jar  //Spring Boot的用于依赖jar
          //artifact bootJar //Spring Boot的可执行jar
        }
    }
}

action.yml

name: Publish package to GitHub Packages
on:
  release:
    types: [ created ]
jobs:
  publish:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v2
        with:
          java-version: 11
          distribution: adopt
      - name: Validate Gradle wrapper
        uses: gradle/wrapper-validation-action@v1
      - name: Make gradlew executable
        run: chmod +x ./gradlew
      - name: Publish package
        uses: gradle/gradle-build-action@v2
        with:
          arguments: publish
        env:
          USERNAME: ${{ secrets.USERNAME }}
          GITHUB_TOKEN: ${{ secrets.PUBLISH_TOKEN }}

需要将gradlew设置可执行,不然会报错

    - name: Make gradlew executable
      run: chmod +x ./gradlew

报错信息

/home/runner/work/_temp/cf1a2363-0c16-47df-b928-cfef31860ce6.sh: line 1: ./gradlew: Permission denied
或者
Error: Gradle script '/home/runner/work/gradle-lib-demo/gradle-lib-demo/gradlew' is not executable.

默认打包用于依赖的jar的命名会添加plain,需要将命名中的plain去掉,才能在引用依赖的时候正确下载jar包

jar {
    archiveClassifier = ''
}

参考


Previous Post
Copy a List to Another List in Java
Next Post
Spring Data Jpa - Projections