【问题标题】:Kotlin DSL "from" keyword not found未找到 Kotlin DSL“from”关键字
【发布时间】:2021-05-22 10:15:51
【问题描述】:

我一直在尝试关注GitHub tutorial 来发布一个包。问题是我在尝试运行 Gradle 时收到以下错误:

Script compilation error:

Line 49:           from(components["java"])
                   ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: 
                       public inline fun <reified T : VersionControlSpec> VcsMapping.from(noinline configureAction: TypeVariable(T).() -> Unit): Unit defined in org.gradle.kotlin.dsl
                       public inline fun <T : VersionControlSpec> VcsMapping.from(type: KClass<TypeVariable(T)>, configureAction: Action<in TypeVariable(T)>): Unit defined in org.gradle.kotlin.dsl

由于某种原因,“from”关键字无法识别。

这是我的 build.gradle.kts 脚本:

plugins {
    id("org.jetbrains.kotlin.jvm") version "1.5.0"
    `java-library`
    `maven-publish`
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    implementation("com.google.guava:guava:30.0-jre")
    testImplementation("org.jetbrains.kotlin:kotlin-test")
    testImplementation("org.jetbrains.kotlin:kotlin-test-junit")
    api("org.apache.commons:commons-math3:3.6.1")
}

publishing {
    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/jorgeparavicini/draughts")
            credentials {
                username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
                password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
            }
        }
    }
    publications {
        register("gpr") {
            from(components["java"])
        }
    }

我该如何解决这个问题?

【问题讨论】:

    标签: kotlin gradle package gradle-kotlin-dsl github-package-registry


    【解决方案1】:

    您没有提供发布的类型,因此您只使用了基本的Publicationfrom()MavenPublication 的函数,所以需要明确指定需要MavenPublication

    publications {
        register<MavenPublication>("gpr") {
            from(components["java"])
        }
    }
    

    【讨论】:

    • 嗯,Idk,我为什么这么想,是一个关键字。那行得通,但我仍然认为文档应该反映这一点。谢谢你的回答^^
    • 关于发布的文档中的所有示例 (link1link2) 都指定了 Kotlin 和 Gradle DSL 的发布类型。也许在过去它不是必需的,然后它已经改变了,idk。另外,我相信 Gradle 构建文件中没有特殊的关键字。 Kotlin/Gradle 有关键字,只有函数和属性。
    • 可能取自 docs.github.com/en/packages/… ,它没有指定类型(它们在文档源代码中,但标签 被渲染器切除)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2020-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多