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

如何通过Gradle将Javadoc发布至GitHub Packages?

解决Gradle发布Javadoc到GitHub Packages的问题

1. 调整Gradle配置,正确生成并关联Sources/Javadoc包

修改build.gradle,替换硬编码的Artifact路径,同时启用Sources和Javadoc的自动生成:

import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins {
    id 'java-library'
    id "maven-publish"
    id 'io.github.goooler.shadow' version '8.1.7'
}

java {
    toolchain.languageVersion.set(JavaLanguageVersion.of(21))
    // 开启源码包和Javadoc包生成
    withSourcesJar()
    withJavadocJar()
}

publishing {
    repositories {
        maven {
            name = "github"
            url = uri("https://maven.pkg.github.com/MyProject/MyProject")
            credentials(HttpHeaderCredentials) {
                name = project.findProperty("githubAuthHeaderName") ?: "Authorization"
                value = project.findProperty("githubAuthHeaderValue") ?: ""
            }
            authentication {
                header(HttpHeaderAuthentication)
            }
        }
    }
    publications {
        gpr(MavenPublication) {
            // 直接关联ShadowJar作为主包,避免硬编码路径
            artifact shadowJar
            // 添加源码包和Javadoc包到发布内容
            artifact sourcesJar
            artifact javadocJar
            
            groupId 'com.example'
            artifactId 'myproject'
            version '1.0-SNAPSHOT' // 建议移到gradle.properties统一管理版本号
        }
    }
}

archivesBaseName = 'MyProject'

sourceSets.main {
    java.srcDirs = ['src']
    resources.srcDirs = ['resources']
}

compileJava.options.encoding = 'UTF-8'

shadowJar {
    archiveBaseName.set('MyProject')
    archiveClassifier.set(null)
}

// 移除冗余的build依赖,publish任务会自动触发所需构建
// build.dependsOn shadowJar

2. 修复409 Conflict错误

出现409冲突是因为GitHub Packages不允许覆盖已存在的同版本SNAPSHOT文件,可通过以下方式解决:

  • 删除已存在的冲突版本:到GitHub Packages页面找到对应SNAPSHOT版本,手动删除后重新发布。
  • 确保SNAPSHOT版本唯一性:Gradle会自动为SNAPSHOT版本生成带时间戳的唯一标识,只要版本号保留-SNAPSHOT后缀,每次发布的文件路径都会不同,避免冲突。
  • 构建前清理缓存:在GitHub Action中添加clean任务,确保每次构建都是全新产物:

修改后的GitHub Action脚本:

name: Build with Gradle

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK
      uses: actions/setup-java@v4
      with:
        distribution: 'temurin'
        java-version: '21'
        cache: gradle
    - name: Grant execute permission for gradlew
      run: chmod +x gradlew
    - name: Clean and Publish
      run: ./gradlew clean publish -PgithubAuthHeaderName='Authorization' -PgithubAuthHeaderValue='Bearer ${{ secrets.TOKEN }}'
    - name: Upload Artifact
      uses: actions/upload-artifact@v4
      with: 
        name: MyProject
        path: build/libs/MyProject-*.jar

3. 验证发布结果

发布完成后,在GitHub Packages的对应版本页面应该能看到三个文件:

  • myproject-1.0-SNAPSHOT.jar(主Shadow包)
  • myproject-1.0-SNAPSHOT-sources.jar(源码包)
  • myproject-1.0-SNAPSHOT-javadoc.jar(Javadoc包)

引入依赖后,IDE就能正常显示方法注释了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:48:16