使用 Kotlin DSL 发布库

Fur*_*mir 5 android publishing kotlin gradle-kotlin-dsl

我想使用 Kotlin DSL 发布一个 Android 库。我有一些错误

val sourcesJar by tasks.registering(Jar::class) {
    archiveClassifier.set("sources")
    from(sourceSets.getByName("main").allSource) 
}

Run Code Online (Sandbox Code Playgroud)

未找到名称为“main”的 SourceSet。

publishing {
    publications {
        create<MavenPublication>("maven") {
            groupId = artifactGroup
            artifactId = artifactID
            version = artifactVersion

            from(components["java"])
            artifact(sourcesJar.get())

            pom {
                ...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

找不到名称为“java”的 SoftwareComponentInternal。

这些块位于库模块中build.gradle.kts
摇篮版本:5.6.2

我该如何解决这些问题?

提前致谢。

更新

需要使用android源集。

val androidSourcesJar by tasks.registering(Jar::class) {
    archiveClassifier.set("sources")
    from(android.sourceSets.getByName("main").java.srcDirs)
}
Run Code Online (Sandbox Code Playgroud)

dr0*_*r0i 2

我必须分别应用该java插件apply plugin: "java"。添加如下:

plugins {
 id 'java'
Run Code Online (Sandbox Code Playgroud)

在官方 gradle 文档中获取有关 SoftwareComponent 的更多信息。