如何在Jitpack上使用maven为Kotlin库发布KDoc



背景

经过大量的研究和尝试,并寻求帮助,我已经成功地在Jitpack上使用maven发布了一个私人Github存储库(在此处编写)。

所以,目前我放在Jitpack存储库中的文件如下:

  • jitpack.yml-告诉要使用哪些文件
  • library-release.aar-(模糊的)代码本身
  • pom-default.xml-依赖项和一些其他配置

问题

虽然依赖性问题和AAR文件本身都很好,我可以使用这个库,但我注意到我找不到一种方法来向使用它的人提供我在那里写的KDoc(比如JavaDocs,但对于Kotlin)

我尝试过的

除了各种渐变任务,我还尝试了安卓工作室自己的简单操作来制作它。由于没有提到KDoc,我使用了Tools->CCD_ 2。

遗憾的是,它告诉我没有,事实上,这里有的报道

但即使它成功了,我也不知道如何将它与其他文件一起发布。

问题

我希望这是可能的,但我如何才能生成&在Jitpack上使用maven的公共KDoc?

作为一个对Android开发相对陌生的人,我花了很长时间才弄清楚,所以我想花时间分享我的发现。

与文档一起发布aar库的解决方案是将";sources.jar";人工制品和你的aar。如果你熟悉iOS,那么sources.jar将基本上充当你的代码头文件,你可以用它公开你的未优化库API和KDocs。当使用AndroidStudio/Gradle的用户下载你的库时,它将自动拉入你的sources.jar,并能够在IDE中将你的aar链接到你的KDocs上。

在build.gradle中,请确保您使用的是"maven publish"。

创建一个新任务来构建你的sources.jar。由于我使用的是封闭源代码,我不想公开我的整个库,所以我手工选择了包括我的公共API及其文档的特定文件:

task androidSourcesJar(type: Jar) {
group("documentation")
classifier("sources")
def sdkDir = "$projectDir/src/main/java/com/project/sdk"
def publicAPI = ["$sdkDir/MyLibAPI.kt",
"$sdkDir/MyLibData.kt",
"$sdkDir/MyLibNotificationInterface.kt",
"$sdkDir/utils",
from publicAPI
}

从那时起,我们需要Maven发布来运行此任务,并将其作为工件包含到我们的Maven存储库中。每个人的maven发布设置看起来都有点不同,但只需将artifact(tasks["androidSourcesJar"])添加到发布块中即可。我的看起来像这样:

publishing {
publications {
aar(MavenPublication) {
artifactId = "mylib"
artifact(tasks["androidSourcesJar"])
artifact("$buildDir/outputs/aar/mylib-release.aar")
... (additional setup)
}
}
}

从那里你可以像往常一样发布你的aar,新创建的source.jar将与它一起发布,允许你的用户访问你的Kdocs

就是这样。在我(来自iOS)看来,这个过程记录得多么糟糕确实有点荒谬,尽管大多数出版的图书馆似乎都已经明白了这一点。

最新更新