我想发布一个带有源代码的库。
我的图书馆项目结构
: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)
如何获取对所有 sourceSet(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
关于android - 发布 Android Kotlin 库以及源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69733425/