发布 Android Kotlin 库和源代码
Publishing Android Kotlin library along with source code
我想发布一个带有源代码的库。
我的库项目结构
: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
我不确定这是否是 Gradle Kotlin DSL 中的错误。但是我们做了以下解决方法来访问 Kotlin 源目录:
val kotlinSrcDirs = (android.sourceSets["release"].kotlin.srcDirs() as com.android.build.gradle.internal.api.DefaultAndroidSourceDirectorySet).srcDirs
我想到的解决方案是
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
我想发布一个带有源代码的库。
我的库项目结构
: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
我不确定这是否是 Gradle Kotlin DSL 中的错误。但是我们做了以下解决方法来访问 Kotlin 源目录:
val kotlinSrcDirs = (android.sourceSets["release"].kotlin.srcDirs() as com.android.build.gradle.internal.api.DefaultAndroidSourceDirectorySet).srcDirs
我想到的解决方案是
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