如何使用发布在GitHub Packages上的自建Gradle插件?
确认GitHub Packages仓库URL正确
把url = "https://maven.pkg.github.com/..."里的...替换成你的GitHub用户名/组织名加插件仓库名,格式必须是https://maven.pkg.github.com/OWNER/REPO,比如你的插件在用户my-github-name的my-plugin-repo仓库下,URL要写成https://maven.pkg.github.com/my-github-name/my-plugin-repo。核对插件ID与发布配置完全一致
发布插件时,你得在build.gradle(或build.gradle.kts)里用gradlePlugin块声明插件ID,示例代码:gradlePlugin { plugins { myPlugin { id = 'my-plugin' // 这里的ID必须和你项目中引用的完全匹配,大小写、符号都不能错 implementationClass = 'com.example.MyPlugin' } } }检查发布时填的ID是不是和你用的
my-plugin一模一样。验证凭证权限
确保你用的GitHub个人访问令牌(就是配置里的password)有read:packages权限。如果是组织仓库,还要确认你的账号能访问该组织的Packages。另外用户名是你的GitHub账号名,别填错。检查插件版本是否准确
登录GitHub Packages页面,确认你发布的插件版本确实是0.0.1,有没有多写前缀(比如写成v0.0.1)或者拼写错误。调整仓库顺序(可选)
可以把GitHubPackages仓库移到gradlePluginPortal()前面,避免Gradle优先去官方仓库找不存在的插件,调整后的配置:pluginManagement { repositories { maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } maven { name = "GitHubPackages" url = "https://maven.pkg.github.com/OWNER/REPO" credentials { username = "你的GitHub用户名" password = "带read:packages权限的个人访问令牌" } } gradlePluginPortal() } }确认插件是按Gradle插件格式发布的
得用Gradle的maven-publish插件配合gradlePlugin块发布,这样才会生成Gradle能识别的插件元数据。如果只是传了普通JAR包,Gradle没法通过插件ID找到它,得直接引用依赖才行。
内容的提问来源于stack exchange,提问作者sge

