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

如何修复Gradle构建报错:'void org.gradle.api.internal...'

解决Gradle构建MyHome项目时的ArchivePublishArtifact构造函数错误

问题描述

运行gradlew assemble构建MyHome后端时出现以下错误:

FAILURE: Build failed with an exception.

What went wrong:
'void org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact.(org.gradle.api.tasks.bundling.AbstractArchiveTask)'

Try:
Run with --stacktrace option to get the stack trace.
Run with --debug option to get more log output.
Run with --scan to get full insights.

Get more help at https://help.gradle.org

BUILD FAILED in 1s
Watched directory hierarchies: []

项目的build.gradle文件内容如下:

plugins {
  id "idea"
  id "org.openapi.generator"
}

repositories {
  mavenCentral()
}

dependencies {
  implementation "io.swagger:swagger-annotations:${swaggerAnnotationsVersion}"
  implementation "javax.validation:validation-api:${javaxValidationApiVersion}"
  implementation "com.fasterxml.jackson.core:jackson-annotations:${fasterXmlJacksonAnnotationsVersion}"
  implementation "org.springframework.boot:spring-boot-starter-web:${springBootVersion}"
  implementation "org.openapitools:jackson-databind-nullable:${jacksonDatabindNullableVersion}"
  implementation "io.springfox:springfox-swagger2:${springFoxVersion}"
  implementation "io.springfox:springfox-swagger-ui:${springFoxVersion}"
  implementation "io.springfox:springfox-spring-web:${springFoxVersion}"
  implementation "org.springframework.data:spring-data-commons:${springBootVersion}"

  compileOnly "org.projectlombok:lombok:${lombokVersion}"
  annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
}

task generateOpenApiSpec(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
  generatorName = "spring"
  inputSpec = "$projectDir/src/main/resources/public/swagger/api.yaml".toString()
  outputDir = "$buildDir/generated".toString()
  apiPackage = "com.myhome.api"
  invokerPackage = "com.myhome.utils"
  modelPackage = "com.myhome.model"
  typeMappings = [
          'bigdecimal': 'java.math.BigDecimal'
  ]

  additionalProperties = [
          "skipDefaultInterface": "true",
          "interfaceOnly"       : "true",
          "booleanGetterPrefix" : "is",
          "useTags"             : "true"
  ]
  importMappings = [
          'Pageable': 'org.springframework.data.domain.Pageable',
          'PageInfo': 'com.myhome.utils.PageInfo'
  ]
}
compileJava.dependsOn(generateOpenApiSpec)

def generatedSourcesDir = file("build/generated/src/main/java")
sourceSets {
  main {
    java {
      srcDir 'build/generated/src/main/java'
    }
  }
}
idea {
  module {
    sourceDirs += generatedSourcesDir
    generatedSourceDirs += generatedSourcesDir
  }
}

问题原因

该错误是Gradle版本与OpenAPI Generator插件版本不兼容导致的。ArchivePublishArtifact的构造函数签名在Gradle不同版本中发生了变更,旧版本的OpenAPI插件调用了已废弃或移除的构造方法。

解决步骤

1. 对齐Gradle与OpenAPI插件版本

  • 查看gradle/wrapper/gradle-wrapper.properties文件,确认当前Gradle版本;
  • 根据Gradle版本匹配兼容的OpenAPI插件版本:
    • Gradle 7.x+ 适配OpenAPI Generator插件6.0.0及以上版本;
    • Gradle 6.x 适配插件5.x版本。

修改build.gradle中的插件声明,指定兼容版本:

plugins {
  id "idea"
  id "org.openapi.generator" version "6.6.0" // 替换为与Gradle匹配的版本
}

2. 校验Spring Boot版本兼容性

确保Spring Boot版本与Gradle版本匹配:

  • Gradle 7.x+ 适配Spring Boot 2.5.x及以上;
  • Gradle 6.x 适配Spring Boot 2.4.x及以下。

3. 清理缓存并重新构建

执行以下命令清理构建缓存,再重新构建:

./gradlew clean assemble --stacktrace

--stacktrace参数可帮助定位是否存在其他依赖冲突问题。

4. 验证生成代码配置

确认generateOpenApiSpec任务中指定的api.yaml文件路径正确,确保文件存在,避免因文件缺失导致间接构建失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:03:24