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