我需要使用 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/