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

2023-12-26

背景

经过大量的研究和尝试,并寻求帮助,我成功地在 Jitpack 上使用 maven 发布了一个私有的 Github 存储库(写为here https://stackoverflow.com/a/67071394/878126).

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

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

问题

虽然依赖关系问题和 AAR 文件本身都很好,并且我可以使用该库,但我注意到我找不到一种方法来将我在那里编写的内容作为 KDoc(类似于 JavaDocs,但适用于 Kotlin)提供给使用它的任何人。

我尝试过的

除了各种gradle任务之外,我还尝试了Android Studio本身的简单操作来制作它。由于没有提到 KDoc,我使用了Tools->Generate JavaDocs反而。

可悲的是,它告诉我没有,而且确实有报道here https://youtrack.jetbrains.com/issue/KTIJ-4679.

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

问题

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


作为一个相对较新的 Android 开发者,我花了很长时间才弄清楚这一点,所以想花时间分享我的发现。

与文档一起发布 aar 库的解决方案是将“sources.jar”工件与 aar 一起打包。如果您熟悉 iOS,那么 resources.jar 本质上将充当代码的头文件,您可以在其中公开未缩小的库 API 和 KDocs。当使用 Android Studio/Gradle 的用户下载您的库时,它将自动提取您的sources.jar,并能够将您的 aar 链接到 IDE 中的 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-publish 来运行此任务并将其作为工件包含到我们的 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)来说,这个过程的记录确实有点荒谬,尽管大多数已发布的库似乎已经弄清楚了这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Jitpack 上使用 maven 发布 Kotlin 库的 KDoc? 的相关文章

  • 在 ViewPager Fragments 中使用 Master/Detail 模板(下载链接)

    工作代码 https github com lukeallison ViewPagerMasterDetail https github com lukeallison ViewPagerMasterDetail Android 主 详细流
  • Jenkins:从神器部署战争文件

    我们正在使用Jenkins建立 maven 并部署工件 JAR 和 WAR s 到内部工件服务器 快照和版本 对于部署 目前 我们有 Jenkins 作业来打包 war 文件 来自发布 scm 标签 并部署到不同的环境 服务器 我们想要跳过
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • Maven - 从 SVN 提取代码

    我正在将 J2ee 项目从 Ant 迁移到 Maven ant 任务之一是从 SVN 存储库中提取现有源代码编译它 并将其 jar 添加到我当前的构建中作为 Jar 是否可以获取源代码并在 Maven 中编译它 谢谢你
  • 如何默认将 Maven 插件附加到阶段?

    我有一个 Maven 插件应该在编译阶段运行 所以在项目中consumes我的插件 我必须做这样的事情
  • Adobe 是否为其 PDF 阅读器提供 Android SDK 或 API? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在我们的应用程序内的视图中显示本地 PDF 文件 在 Android 4 03 下的平板电脑上运行 目前 我们将 Adob eR
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 带有 EditText 和 Spinner 的对话框

    我有一个按钮 单击后会弹出一个对话框 我希望对话框有一个EditText and a Spinner对话框内 我不知道如何设置它的视图 我有一个代码AlertDialog它有效 只是EditText and Spinner我需要将其放入其中
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 你的CPU不支持NX

    我刚刚下载了 android studio 但是我遇到了一个问题 当我运行它时 它说你的 cpu 不支持 NX 我应该怎么办 NX 或实际上是 NX 处理器位 是处理器的一项功能 有助于保护您的 PC 免受恶意软件的攻击 当此功能未启用并且
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何使用InputConnectionWrapper?

    我有一个EditText 现在我想获取用户对此所做的所有更改EditText并在手动将它们插入之前使用它们EditText 我不希望用户直接更改中的文本EditText 这只能由我的代码完成 例如通过使用replace or setText
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • 在 android DatePickerDialog 中将语言设置为法语

    有什么办法可以让日期显示在DatePickerDialog用法语 我已经搜索过这个但没有找到结果 这是我的代码 Calendar c Calendar getInstance picker new DatePickerDialog Paym
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp

随机推荐