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

在build.gradle.kts中配置Maven发布时遇Unresolved reference错误求助

问题描述

多次尝试使用Gradle构建功能均未成功,添加构建步骤时总会出现“Unresolved reference to ...”错误。本次尝试将库发布到Maven仓库,已参考Gradle官方文档添加java-library和maven-publish插件并配置publishing块,但publications处提示“Unresolved reference: publications”,附上完整build.gradle.kts代码,怀疑遗漏相关依赖或导入,恳请解决。

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
    id("org.jetbrains.kotlin.plugin.serialization")
    id("java-library")
    id("maven-publish")
}

android {
    namespace = "com.domain.projectname"
    compileSdk = 33

    defaultConfig {
        minSdk = 24
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = true
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }

    publishing {
        publications {
            create<MavenPublication>("myLibrary") {
                from(components["java"])
            }
        }

        repositories {
            maven {
                name = "myRepo"
                url = uri(layout.buildDirectory.dir("repo"))
            }
        }
    }
}

dependencies {
    implementation("androidx.core:core-ktx:1.8.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.8.0")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
解决方案

问题根源

你错误地将publishing块嵌套在了android块内部,而maven-publish插件的配置块必须放在脚本根级别(与android、dependencies块同级),否则Gradle无法识别publications等属性。此外,Android库发布时不能使用components["java"],应该绑定Android的构建变体组件(比如release)。

修改后的完整配置

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
    id("org.jetbrains.kotlin.plugin.serialization")
    id("java-library")
    id("maven-publish")
}

android {
    namespace = "com.domain.projectname"
    compileSdk = 33

    defaultConfig {
        minSdk = 24
        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = true
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

// 将publishing块移到根级别
publishing {
    publications {
        create<MavenPublication>("myLibrary") {
            // 使用Android的release变体组件替代java组件
            from(components["release"])
        }
    }

    repositories {
        maven {
            name = "myRepo"
            url = uri(layout.buildDirectory.dir("repo"))
        }
    }
}

dependencies {
    implementation("androidx.core:core-ktx:1.8.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.8.0")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}

关键修改点

  1. 把publishing块从android内部移到脚本根目录,让Gradle能正确加载maven-publish插件的配置项
  2. 将from(components["java"])改为from(components["release"]),适配Android库的构建变体机制——Android插件会为每个构建变体生成对应的组件,这里选择发布release版本的库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 07:56:21