微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Dokka针对我的Android库为主要和androidTest源集生成Javadoc?

如何解决如何使用Dokka针对我的Android库为主要和androidTest源集生成Javadoc?

我正在将图书馆项目从Java移到Kotlin。我有一个要求,我也需要为has库和Android工具测试提供Javadoc。看到* .kt文件时,它死了,我不再使用Javadoc。所以我转向了Dokka。

我的问题是我可以轻松地用Dokka生成Javadoc,但仅适用于主要源集。但是我无法为仪器测试生成docus。

我在库构建gradle中具有以下配置:

apply plugin: 'org.jetbrains.dokka'
...
dokkaJavadoc.configure {
    dokkaSourceSets {
        named("main") {
            // Main source set conf
            outputDirectory = file("dokkadoc/service-doc")
            includes.from(files("dokka_modules_test.md"))
            sourceRoots.from(file("src/main/java"))
        }
        named("androidTest") {
            // Test source set conf
            outputDirectory = file("dokkadoc/service-test-doc")
            includes.from(files("dokka_modules_test.md"))
            sourceRoots.from(file("src/androidTest/java"))
        }
        configureEach {
            // Shared conf for all source sets
            noAndroidSdkLink.set(false)
            includeNonPublic.set(false)
            skipEmptyPackages.set(true)
            reportUndocumented.set(true)
            skipDeprecated.set(false)
        }

    }
}

在根build.grade中,我导入:

buildscript {
    ..
    ext.dokka_version = '1.4.10.2'
    repositories {
        ..
    }
    dependencies {
        classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
    }
}

我在做什么错?还是我误解了,无法以这种方式生成单独的Javadocs?我是否必须为所有构建变体生成扩展任务,例如:

libraryVariants.all { variant ->

..

def variantDokkadoc = task("dokkadoc${variant.name.capitalize()}",type: org.jetbrains.dokka.gradle.DokkaTask) {
...
}

编辑: 似乎当我像这样为测试部分创建单独的任务时,它就完成了:

// Dokka task for Service tests
task dokkaJavadocTests(type: org.jetbrains.dokka.gradle.DokkaTask) {
    dokkaSourceSets {
        named("main") {
            outputDirectory.set(file("dokkadoc/service-test-doc"))
            includes.from(files("dokka_modules_test.md"))
            sourceRoots.setFrom(file("src/main/java"))
            sourceRoots.from(file("src/androidTest/java"))

            noAndroidSdkLink.set(false)
            includeNonPublic.set(false)
            skipEmptyPackages.set(true)
            reportUndocumented.set(true)
            skipDeprecated.set(false)
        }
    }
}

出于某种原因,我不得不和

named("main")

否则它将忽略测试类。

此外,我仍然无法生成Javadoc版本,它会生成HTML版本。 如果我添加

outputFormat = "javadoc"

然后它只会忽略它

编辑2:

现在,我通过执行第二项测试并将它们都保持为HTML格式来解决了这个问题。例如:

// Main dokka task for the library
dokkaHtml.configure {
    dokkaSourceSets {
        named("main") {
            // Main source set conf
            outputDirectory.set(file("dokkadoc/${project.ext.versionNameDokkaDoc}"))
            includes.from(files("dokka_modules_main.md"))

            noAndroidSdkLink.set(false)
            includeNonPublic.set(false)
            skipEmptyPackages.set(true)
            reportUndocumented.set(true)
            skipDeprecated.set(false)
        }
    }
}

// Dokka task for the library tests
task dokkaHtmlTests(type: org.jetbrains.dokka.gradle.DokkaTask) {
    dokkaSourceSets {
        named("main") {
            outputDirectory.set(file("dokkadoc/${project.ext.versionNameDokkaDocTests}"))
            includes.from(files("dokka_modules_test.md"))
            sourceRoots.setFrom(file("src/main/java"))
            sourceRoots.from(file("src/androidTest/java"))

            noAndroidSdkLink.set(false)
            includeNonPublic.set(false)
            skipEmptyPackages.set(true)
            reportUndocumented.set(true)
            skipDeprecated.set(false)
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?