Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle创建包含子项目源的javadoc_Gradle - Fatal编程技术网

Gradle创建包含子项目源的javadoc

Gradle创建包含子项目源的javadoc,gradle,Gradle,我有以下项目结构: API ----client --------subA ------------build.gradle --------subB ------------build.gradle --------build.gradle 以及客户端子项目内部的以下build.gradle: task clientApiDocs(type: Javadoc) { source = sourceSets.main.allJava destinationDir = report

我有以下项目结构:

API
----client
--------subA
------------build.gradle
--------subB
------------build.gradle
--------build.gradle
以及客户端子项目内部的以下build.gradle:

task clientApiDocs(type: Javadoc) {
    source = sourceSets.main.allJava
    destinationDir = reporting.file("javadoc")
    classpath = configurations.compile
    options.tags = ["stereotype"]
    options.addStringOption('Xdoclint:none', '-quiet')
}

assemble.dependsOn(clientApiDocs)

distributions {
    main {
        contents{
            from (clientApiDocs.outputs) {
                into 'javadoc/ClientJava'
            }
        }
    }
    createStartScripts {
        applicationName = 'ClientJava'
    }
}

我的目标是在clientApiDocs中包含子项目subA和subB中的javadoc。我如何才能做到这一点?

Aweasome
io.freefair
插件集合提供了一个名为的插件,它应该适合您的需要:

此插件向项目添加一个
aggregateJavadoc
任务,该任务将为项目本身及其所有子项目(应用了
java
插件)生成聚合的javadoc

只需将以下代码添加到根项目的
build.gradle
文件中。根据中的兼容性矩阵选择一个版本


awesome
io.freefair
插件集合提供了一个名为的插件,该插件应满足您的需要:

此插件向项目添加一个
aggregateJavadoc
任务,该任务将为项目本身及其所有子项目(应用了
java
插件)生成聚合的javadoc

只需将以下代码添加到根项目的
build.gradle
文件中。根据中的兼容性矩阵选择一个版本

plugins {
    id 'io.freefair.aggregate-javadoc' version <version>
}
project.allprojects(p ->
    p.getPlugins().withType(JavaPlugin.class, jp ->
        aggregateJavadoc.configure(aj -> {
            TaskProvider<Javadoc> javadoc = p.getTasks().named(JavaPlugin.JAVADOC_TASK_NAME, Javadoc.class);

            aj.source(javadoc.map(Javadoc::getSource));

            if (aj.getClasspath() instanceof ConfigurableFileCollection) {
                ((ConfigurableFileCollection) aj.getClasspath()).from(javadoc.map(Javadoc::getClasspath));
            }
            else {
                ConfigurableFileCollection classpath = project.files();
                classpath.from(aj.getClasspath());
                classpath.from(javadoc.map(Javadoc::getClasspath));
                aj.setClasspath(classpath);
            }

            StandardJavadocDocletOptions options = (StandardJavadocDocletOptions) javadoc.get().getOptions();
            StandardJavadocDocletOptions aggregateOptions = (StandardJavadocDocletOptions) aj.getOptions();

            options.getLinks().forEach(link -> {
                if (!aggregateOptions.getLinks().contains(link)) {
                    aggregateOptions.getLinks().add(link);
                }
            });
            options.getLinksOffline().forEach(link -> {
                if (!aggregateOptions.getLinksOffline().contains(link)) {
                    aggregateOptions.getLinksOffline().add(link);
                }
            });
            options.getJFlags().forEach(jFlag -> {
                if (!aggregateOptions.getJFlags().contains(jFlag)) {
                    aggregateOptions.getJFlags().add(jFlag);
                }
            });
        })
    )
);