Could not find method uploadArchives() for arguments [build_9y1ozxjm08lb8wodb59629wm8$_run_closure3

在配置Gradle插件开发时遇到uploadArchives()方法找不到的问题,通过将uploadArchives改为publishing块来修复。修改后的build.gradle文件使用maven-publish插件,并正确配置publishing块中的maven仓库地址,成功解决了报错并实现了插件的发布。

配置Gradle插件开发时出现下面的报错,报错处理

 Could not find method uploadArchives() for arguments [build_9y1ozxjm08lb8wodb59629wm8$_run_closure3@70580117] on project ':myapplication' of type org.gradle.api.Project.

原来的build.gradle配置如下:

apply plugin: 'groovy'

dependencies {
    //gradle sdk
    implementation gradleApi()
    //groovy sdk
    implementation localGroovy()
}

//以下内容主要用于发布插件
apply plugin: 'maven-publish'
repositories {
    mavenCentral()
}
group = 'com.ywd.pluginlibrary'
version = '1.0.0'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: uri('./../repo'))
        }
    }
}

修改成下面就可以了

apply plugin: 'groovy'

dependencies {
    //gradle sdk
    implementation gradleApi()
    //groovy sdk
    implementation localGroovy()
}

//以下内容主要用于发布插件
apply plugin: 'maven-publish'
repositories {
    mavenCentral()
}
group = 'com.ywd.pluginlibrary'
version = '1.0.0'

publishing {
    repositories {
        maven {
            url = uri('./../repo')
        }
    }
}

你遇到的错误: ``` Could not find method minecraft() for arguments [...] on root project 'testmod' of type org.gradle.api.Project ``` 说明你在 `build.gradle` 文件中使用了 `minecraft { ... }` 块,但 Gradle 并不认识这个方法。这通常是因为你没有正确应用 **ForgeGradle 插件**,或者插件版本不兼容。 --- ## ✅ 错误原因 - `minecraft { ... }` 是 ForgeGradle 插件提供的 DSL 方法,只有在插件正确加载后才可用。 - 如果你没有在 `build.gradle` 中正确应用 `net.minecraftforge.gradle` 插件,或者插件版本不兼容,就会导致这个错误。 --- ## ✅ 解决方案 ### ✅ 1. 确保正确应用了 ForgeGradle 插件 #### 修改 `build.gradle` 文件顶部: ```groovy plugins { id "net.minecraftforge.gradle" version "5.1.+" apply false id "java" } ``` 然后在 `buildscript` 中添加: ```groovy buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true } } ``` > 注意:`apply false` 是为了在项目级别先声明插件,而不是立即应用。 --- ### ✅ 2. 在 `build.gradle` 中应用 ForgeGradle 插件 确保你在 `build.gradle` 的最顶部应用了 ForgeGradle 插件(在 `apply plugin: 'net.minecraftforge.gradle'` 或使用 `plugins { ... }`): ```groovy plugins { id "net.minecraftforge.gradle" version "5.1.+" apply true id "java" } ``` 或者: ```groovy apply plugin: 'net.minecraftforge.gradle' ``` --- ### ✅ 3. 确保你使用的是兼容的 ForgeGradleGradle 版本 | Forge 版本 | ForgeGradle 版本 | Gradle 版本 | |------------|------------------|--------------| | 1.16.5 | 3.0.x - 5.1.x | 6.8.x - 7.6.x | | 1.18.2 | 5.1.x | 7.2.x - 7.6.x | | 1.19.x | 5.1.x | 7.4.x | | 1.20.x | 5.1.x | 7.6.x | #### 示例 `gradle.properties` 设置: ```properties org.gradle.jvmargs=-Xmx2G -Dfile.encoding=UTF-8 minecraft_version=1.18.2 forge_version=40.2.0 ``` --- ### ✅ 4. 完整的 `build.gradle` 示例(适用于 1.18.2) ```groovy plugins { id "net.minecraftforge.gradle" version "5.1.+" apply true id "java" } group = "com.example" version = "1.0" minecraft { mappings channel: 'official', version: '1.18.2' runs { client { taskName = "client" forgeRunConfig() } server { taskName = "server" forgeRunConfig() } } } jar { archiveBaseName.set("testmod") } ``` --- ### ✅ 5. 更新 Gradle Wrapper(可选) 如果你使用的是旧版 Gradle,建议更新 Gradle Wrapper: ```bash ./gradlew wrapper --gradle-version 7.6 ``` 然后确认 `gradle/wrapper/gradle-wrapper.properties` 中: ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip ``` --- ## ✅ 总结对比 | 问题 | 原因 | 解决方法 | |------|------|-----------| | `Could not find method minecraft()` | 没有正确应用 ForgeGradle 插件 | 在 `build.gradle` 中添加并应用 `net.minecraftforge.gradle` | | 插件加载失败 | 版本不兼容 | 使用兼容的 ForgeGradle + Gradle 版本 | | 构建失败 | 依赖未正确配置 | 配置 `buildscript` 中的 `classpath` | | 输出 jar 名称无效 | 使用了废弃方法 | 使用 `archiveBaseName.set(...)` | --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值