如何通过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
相关产品推荐
相关产品推荐

