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

问题描述 投票:0回答:2

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

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

android android-studio maven javadoc aar
2个回答
3
投票

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

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
                }
            }
        }
    }

您的默认依赖项块:

dependencies {
       your dependencies...
    }

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

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

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

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

0
投票

我花了将近 2 天的时间来弄清楚这个解决方案,用于生成在任何工件中发布 aar 所需的 aar、pom 、 sha 文件。

这对我使用最新的 Android 版本很有用。截至 2024 年 7 月 8 日

build.gradle
(模块)

plugins {
    .
    .
    id("maven-publish")
}

depedndencis{
.
.
.

}
def libraryGroupId = 'com.example'
def libraryArtifactId = 'sdk'
def libraryVersion = '1.0.0'

publishing {
    publications {
        maven(MavenPublication) {
            //from components.android
            groupId libraryGroupId
            artifactId libraryArtifactId
            version libraryVersion

            afterEvaluate {
                from components.release
            }
        }
    }
    repositories {
        maven {
            url "$buildDir/releases"
        }
    }
}

最后运行以下命令,您可以在 sdk 模块

/build/releases/
文件夹中看到生成的工件。

./gradlew publish

希望这可以帮助每个人解决使用 maven 在本地生成工件的用例

© www.soinside.com 2019 - 2024. All rights reserved.