Skip to content

Commit adc64d5

Browse files
committed
1 parent 6f725dc commit adc64d5

File tree

7 files changed

+55
-51
lines changed

7 files changed

+55
-51
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins {
22
id 'io.freefair.aspectj' version '8.13.1' apply false
33
// kotlinVersion is managed in gradle.properties
44
id 'org.jetbrains.kotlin.plugin.serialization' version "${kotlinVersion}" apply false
5-
id 'org.jetbrains.dokka' version '1.9.20'
5+
id 'org.jetbrains.dokka'
66
id 'com.github.bjornvester.xjc' version '1.8.2' apply false
77
id 'io.github.goooler.shadow' version '8.1.8' apply false
88
id 'me.champeau.jmh' version '0.7.2' apply false

buildSrc/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ ext {
2020
dependencies {
2121
checkstyle "io.spring.javaformat:spring-javaformat-checkstyle:${javaFormatVersion}"
2222
implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}"
23+
implementation "org.jetbrains.dokka:dokka-gradle-plugin:2.0.0"
2324
implementation "com.tngtech.archunit:archunit:1.4.0"
2425
implementation "org.gradle:test-retry-gradle-plugin:1.6.2"
2526
implementation "io.spring.javaformat:spring-javaformat-gradle-plugin:${javaFormatVersion}"

buildSrc/src/main/java/org/springframework/build/KotlinConventions.java

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
package org.springframework.build;
1818

1919
import org.gradle.api.Project;
20+
import org.gradle.api.tasks.SourceSet;
21+
import org.gradle.api.tasks.SourceSetContainer;
22+
import org.jetbrains.dokka.gradle.DokkaExtension;
23+
import org.jetbrains.dokka.gradle.DokkaPlugin;
2024
import org.jetbrains.kotlin.gradle.dsl.JvmTarget;
2125
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion;
2226
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile;
@@ -28,8 +32,14 @@
2832
public class KotlinConventions {
2933

3034
void apply(Project project) {
31-
project.getPlugins().withId("org.jetbrains.kotlin.jvm",
32-
(plugin) -> project.getTasks().withType(KotlinCompile.class, this::configure));
35+
project.getPlugins().withId("org.jetbrains.kotlin.jvm", _ -> {
36+
project.getTasks().withType(KotlinCompile.class, this::configure);
37+
if (project.getLayout().getProjectDirectory().dir("src/main/kotlin").getAsFile().exists()) {
38+
project.getPlugins().apply(DokkaPlugin.class);
39+
project.getExtensions().configure(DokkaExtension.class, dokka -> configure(project, dokka));
40+
project.project(":framework-api").getDependencies().add("dokka", project);
41+
}
42+
});
3343
}
3444

3545
private void configure(KotlinCompile compile) {
@@ -49,4 +59,34 @@ private void configure(KotlinCompile compile) {
4959
});
5060
}
5161

62+
private void configure(Project project, DokkaExtension dokka) {
63+
dokka.getDokkaSourceSets().forEach(sourceSet -> {
64+
sourceSet.getSourceRoots().setFrom(project.file("src/main/kotlin"));
65+
sourceSet.getClasspath()
66+
.from(project.getExtensions()
67+
.getByType(SourceSetContainer.class)
68+
.getByName(SourceSet.MAIN_SOURCE_SET_NAME)
69+
.getOutput());
70+
var externalDocumentationLinks = sourceSet.getExternalDocumentationLinks();
71+
externalDocumentationLinks.register("spring-framework", spec -> {
72+
spec.url("https://docs.spring.io/spring-framework/docs/current/javadoc-api/");
73+
spec.packageListUrl("https://docs.spring.io/spring-framework/docs/current/javadoc-api/element-list");
74+
});
75+
externalDocumentationLinks.register("reactor-core", spec ->
76+
spec.url("https://projectreactor.io/docs/core/release/api/"));
77+
externalDocumentationLinks.register("reactive-streams", spec ->
78+
spec.url("https://www.reactive-streams.org/reactive-streams-1.0.3-javadoc/"));
79+
externalDocumentationLinks.register("kotlinx-coroutines", spec ->
80+
spec.url("https://kotlinlang.org/api/kotlinx.coroutines/"));
81+
externalDocumentationLinks.register("hamcrest", spec ->
82+
spec.url("https://javadoc.io/doc/org.hamcrest/hamcrest/2.1/"));
83+
externalDocumentationLinks.register("jakarta-servlet", spec -> {
84+
spec.url("https://javadoc.io/doc/jakarta.servlet/jakarta.servlet-api/latest/");
85+
spec.packageListUrl("https://javadoc.io/doc/jakarta.servlet/jakarta.servlet-api/latest/element-list");
86+
});
87+
externalDocumentationLinks.register("rsocket-core", spec ->
88+
spec.url("https://javadoc.io/static/io.rsocket/rsocket-core/1.1.1/"));
89+
});
90+
}
91+
5292
}

framework-api/framework-api.gradle

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
id 'java-platform'
33
id 'io.freefair.aggregate-javadoc' version '8.13.1'
4+
id 'org.jetbrains.dokka'
45
}
56

67
description = "Spring Framework API Docs"
@@ -54,23 +55,19 @@ javadoc {
5455
}
5556
}
5657

57-
/**
58-
* Produce KDoc for all Spring Framework modules in "build/docs/kdoc"
59-
*/
60-
rootProject.tasks.dokkaHtmlMultiModule.configure {
61-
dependsOn {
62-
tasks.named("javadoc")
58+
dokka {
59+
moduleName = "spring-framework"
60+
dokkaPublications.html {
61+
outputDirectory = project.java.docsDir.dir("kdoc-api")
62+
includes.from("$rootProject.rootDir/framework-docs/src/docs/api/dokka-overview.md")
6363
}
64-
moduleName.set("spring-framework")
65-
outputDirectory.set(project.java.docsDir.dir("kdoc-api").get().asFile)
66-
includes.from("$rootProject.rootDir/framework-docs/src/docs/api/dokka-overview.md")
6764
}
6865

6966
/**
7067
* Zip all Java docs (javadoc & kdoc) into a single archive
7168
*/
7269
tasks.register('docsZip', Zip) {
73-
dependsOn = ['javadoc', rootProject.tasks.dokkaHtmlMultiModule]
70+
dependsOn = ['javadoc', 'dokkaGenerate']
7471
group = "distribution"
7572
description = "Builds -${archiveClassifier} archive containing api and reference " +
7673
"for deployment at https://docs.spring.io/spring-framework/docs/."
@@ -83,7 +80,7 @@ tasks.register('docsZip', Zip) {
8380
from(javadoc) {
8481
into "javadoc-api"
8582
}
86-
from(rootProject.tasks.dokkaHtmlMultiModule.outputDirectory) {
83+
from(project.java.docsDir.dir("kdoc-api")) {
8784
into "kdoc-api"
8885
}
8986
}

gradle.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ byteBuddyVersion=1.17.6
99

1010
kotlin.jvm.target.validation.mode=ignore
1111
kotlin.stdlib.default.dependency=false
12+
13+
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
14+
org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled

gradle/docs-dokka.gradle

Lines changed: 0 additions & 32 deletions
This file was deleted.

gradle/spring-module.gradle

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,6 @@ dependencies {
1515
jmh 'net.sf.jopt-simple:jopt-simple'
1616
}
1717

18-
pluginManager.withPlugin("kotlin") {
19-
apply plugin: "org.jetbrains.dokka"
20-
apply from: "${rootDir}/gradle/docs-dokka.gradle"
21-
}
22-
2318
jmh {
2419
duplicateClassesStrategy = DuplicatesStrategy.EXCLUDE
2520
}

0 commit comments

Comments
 (0)