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

本地构建正常但CI环境下Gradle无法找到自定义插件

问题分析与解决

从报错信息来看,核心问题是CI环境中Gradle找不到插件对应的Plugin Marker Artifact(即com.example.plugins.Testing:com.example.plugins.Testing.gradle.plugin:0.1.4)。本地能正常构建大概率是因为缓存了插件的直接依赖,或是本地环境通过其他方式获取到了ID与插件包的映射关系;结合你提到CI使用自定义Maven仓库构建正常,说明认证和仓库配置本身没问题,问题出在插件的发布环节。

可能的原因及解决方法

  • 插件发布时未生成并上传Plugin Marker Artifact
    Gradle通过插件ID引用插件时,需要一个专门的marker artifact来关联插件ID和实际的插件JAR包。如果插件项目未正确配置发布流程,就不会生成这个marker包,导致无本地缓存的CI环境无法解析插件ID。
    解决:在插件项目的build.gradle.kts中确保正确配置gradlePlugin块,maven-publish插件会自动生成并发布marker artifact:

    plugins {
        `java-gradle-plugin`
        `maven-publish`
    }
    
    gradlePlugin {
        plugins {
            create("testingPlugin") {
                id = "com.example.plugins.Testing" // 与你引用的插件ID完全一致
                implementationClass = "com.example.plugins.TestingPlugin" // 插件主类的完整路径
            }
        }
    }
    
    // 配置Github Packages发布仓库示例
    publishing {
        repositories {
            maven {
                name = "GitHubPackages"
                url = uri("https://maven.pkg.github.com/my_org/infra")
                credentials {
                    username = System.getenv("GITHUB_ACTOR")
                    password = System.getenv("GITHUB_TOKEN")
                }
            }
        }
    }
    

    重新发布插件后,登录Github Packages检查my_org/infra仓库下是否存在com.example.plugins.Testing.gradle.plugin包,且版本为0.1.4。

  • 手动发布插件时未手动创建Marker Artifact
    若你是手动上传插件JAR到Github Packages,而非通过Gradle的maven-publish插件发布,需要手动创建并上传marker artifact:

    1. 创建空Maven项目,坐标设为com.example.plugins.Testing:com.example.plugins.Testing.gradle.plugin:0.1.4
    2. 在项目的pom.xml中添加对实际插件JAR的依赖:
      <dependencies>
          <dependency>
              <groupId>com.example.plugins</groupId> <!-- 实际插件的GroupId -->
              <artifactId>testing-plugin</artifactId> <!-- 实际插件的ArtifactId -->
              <version>0.1.4</version>
              <type>gradle-plugin</type>
          </dependency>
      </dependencies>
      
    3. 将这个marker包上传到Github Packages的my_org/infra仓库。
  • Gradle版本差异(可能性较低)
    检查CI环境使用的Gradle版本是否与本地一致。部分旧版Gradle对Plugin Marker Artifact的解析逻辑存在差异,将CI的Gradle版本升级到与本地一致后再尝试构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:25:20