发布Android Kotlin库以及源代码



我想发布一个带有源代码的库。

我的库项目结构

:library:
└── src
└── main
└── kotlin
└── <package>
└── MyLibrary.kt

gradle.kts

plugins {
...
id("maven-publish")
}
android {
...
// sourceSets{} block is not present as new AGP automatically recognises "src/main/kotlin" as kotlin source
...
}
project.afterEvaluate {
publishing {
publications {
register<MavenPublication>("release") {
groupId = mGroupId
artifactId = mArtifactId
version = mVersion
from(components["release"])
artifact(tasks.getByName("androidReleaseSourcesJar"))
}
}
}
}
tasks.register("androidReleaseSourcesJar", Jar::class) {
archiveClassifier.set("sources")
// Can't refer to `kotlin.srcDirs` but `java.srcDirs` works fine
from(android.sourceSets["release"].kotlin.srcDirs)
}

行出现错误
from(android.sourceSets["release"].kotlin.srcDirs)

我如何获得对所有源集(kotlin + java)的引用,如果不是那么只有kotlin?

AGP版本:7.1.0-beta01

我想出的解决办法是

kotlin.sourceSets["main"].kotlin.srcDirs

用于发布kotlin源代码。如果您需要对一个变体进行多个源的组合,您将需要执行类似

的操作
kotlin.sourceSets["main"].kotlin.srcDirs + kotlin.sourceSets["debug"].kotlin.srcDirs

最终输出

tasks.register("androidReleaseSourcesJar", Jar::class) {
archiveClassifier.set("sources")
from(kotlin.sourceSets["main"].kotlin.srcDirs)
}

在AGP上验证:7.1.0-beta01 &Gradle: 7.3.3

我不确定这是否是Gradle Kotlin DSL中的错误。但是我们做了下面的工作来访问Kotlin源目录:

val kotlinSrcDirs = (android.sourceSets["release"].kotlin.srcDirs() as com.android.build.gradle.internal.api.DefaultAndroidSourceDirectorySet).srcDirs

最新更新