android - 如何使用 JavaDocs 将 AAR 发布到 Maven Local

标签 android android-studio maven javadoc aar

我需要使用 Gradle 将我的 android 库 (aar) 发布到 Maven 本地存储库。 但发布脚本还需要生成 Javadoc,同时仅包含公共(public)和 protected 方法和类。

似乎无法在网上找到任何信息,尤其是关于 Javadocs 部分的信息... 救命,我以前从未发布过库。

最佳答案

好的,经过大量研究,我找到了一个解决方案,所以如果有人需要这个,我将在这里分享。
(我不想让你像我一样感到沮丧)。

1) 创建一个 android 库作为项目中的新模块。

2) 在库的构建 gradle 中放置以下代码:

plugins {
    id 'com.android.library'
    id 'maven-publish'
}

android {
   nothing special here...
}

这是创建 Javadocs 的代码(仍在 build.gradle 中):

task androidJavadocs(type: Javadoc){
    source = android.sourceSets.main.java.srcDirs

    classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
    android.libraryVariants.all{ variant->
        if (variant.name == 'release'){
            owner.classpath += variant.javaCompileProvider.get().classpath
        }
    }
    // excluding a specific class from being documented
    exclude '**/NameOfClassToExclude.java'

    title = null

    options{
        doclet = "com.google.doclava.Doclava"
        docletpath = [file("libs/doclava-1.0.6.jar")]
        noTimestamp = false

        // show only Protected & Public
        memberLevel = JavadocMemberLevel.PROTECTED
    }

}

task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs){
    archiveClassifier.set('javadoc')
    from androidJavadocs.destinationDir
}


task androidSourcesJar(type: Jar){
    archiveClassifier.set('sources')
    from android.sourceSets.main.java.srcDirs
}

这是将库发布到 MavenLocal(仍在 build.gradle 中):

   afterEvaluate {
        publishing{
            publications{
                release(MavenPublication){
                    groupId = "com.example.mylibrary"
                    artifactId = "mycoollibrary"
                    version = "1.0"
                    // Applies the component for the release build variant
                    from components.release
                    // Adds javadocs and sources as separate jars.
                    artifact androidSourcesJar
                    artifact androidJavadocsJar
                }
            }
        }
    }

您的默认依赖项 block :

dependencies {
       your dependencies...
    }

3) 现在您可以下载doclava doclet :
解压缩 zip,复制 doclava-1.0.6.jar 并将其粘贴到 LibraryName/libs 文件夹中(可以使用项目 View 找到)。 如果您希望能够使用@hide,则只需要 doclava。 使用此注释,您可以从 Javadocs 中排除特定方法。

4) 构建并发布您的库: 在android studio右上角找到gradle选项卡,或者从工具栏View->Tool Windows->Gradle中找到。
现在找到您的库 -> 任务 -> 发布 ->publishReleasePublicationToMavenLocal。

5) 要使用另一个项目的库: 转到(使用项目的)settings.gradle 文件并将 MavenLocal() 添加为 dependencyResolutionManagement block 中的第一个存储库。
在模块构建 gradle 中添加您的库作为依赖项:

dependencies{
    implementation 'com.example.mylibrary:mycoollibrary:1.0'
}

关于android - 如何使用 JavaDocs 将 AAR 发布到 Maven Local,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73235883/

相关文章:

android - 如何为 react-native android 项目添加不同字体粗细的字体?

android - 我无法在Android Studio的AVD Manager中看到

java - 找出实际加载了哪些Java类并减少jar

maven - 无法使用@Value在Spring应用程序中获取maven project.version属性

android - android SQLite 中的更新功能不起作用

android - 无法在我的异步类中找到方法

java - 当我尝试模拟我的应用程序时出错

gradle - 在 Android Studio 0.2.9 中导入 gradle 项目时出现 "Neither path nor baseDir may be null or empty string."错误

java - 将ant ivy项目中的jar导入到maven中

android - Android无法识别Flutter App下载的图像