Skip to content

Commit 5a4e11a

Browse files
committed
Add referenced modules to Javadoc classpath
1 parent 15c1172 commit 5a4e11a

File tree

7 files changed

+71
-9
lines changed

7 files changed

+71
-9
lines changed

gradle/plugins/common/src/main/kotlin/junitbuild.javadoc-conventions.gradle.kts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import junitbuild.javadoc.JavadocConventionsExtension
2+
13
plugins {
24
`java-library`
35
}
@@ -6,23 +8,34 @@ java {
68
withJavadocJar()
79
}
810

11+
val javadocReference = configurations.dependencyScope("javadocReference")
12+
13+
val extension = JavadocConventionsExtension(project, javadocReference.get(), tasks.javadoc)
14+
project.extensions.add("javadocConventions", extension)
15+
16+
val javadocClasspath = configurations.resolvable("javadocClasspath") {
17+
extendsFrom(configurations.compileClasspath.get())
18+
extendsFrom(javadocReference.get())
19+
}
20+
921
tasks.javadoc {
22+
classpath = javadocClasspath.get()
1023
options {
1124
memberLevel = JavadocMemberLevel.PROTECTED
1225
header = project.name
1326
encoding = "UTF-8"
1427
locale = "en"
1528
(this as StandardJavadocDocletOptions).apply {
16-
addBooleanOption("Xdoclint:all,-missing,-reference", true)
29+
addBooleanOption("Xdoclint:all,-missing", true)
1730
addBooleanOption("html5", true)
18-
addMultilineStringsOption("tag").value = listOf(
19-
"apiNote:a:API Note:",
20-
"implNote:a:Implementation Note:"
21-
)
22-
use(true)
23-
noTimestamp(true)
24-
}
25-
}
31+
addMultilineStringsOption("tag").value = listOf(
32+
"apiNote:a:API Note:",
33+
"implNote:a:Implementation Note:"
34+
)
35+
use(true)
36+
noTimestamp(true)
37+
}
38+
}
2639
}
2740

2841
tasks.named<Jar>("javadocJar").configure {
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package junitbuild.javadoc
2+
3+
import junitbuild.extensions.javaModuleName
4+
import org.gradle.api.Project
5+
import org.gradle.api.artifacts.Configuration
6+
import org.gradle.api.artifacts.ProjectDependency
7+
import org.gradle.api.tasks.TaskProvider
8+
import org.gradle.api.tasks.javadoc.Javadoc
9+
import org.gradle.external.javadoc.StandardJavadocDocletOptions
10+
import org.gradle.kotlin.dsl.dependencies
11+
12+
class JavadocConventionsExtension(val project: Project, val dependencyScope: Configuration, val task: TaskProvider<Javadoc>) {
13+
14+
fun addExtraModuleReferences(vararg projectDependencies: ProjectDependency) {
15+
project.dependencies {
16+
projectDependencies.forEach { dependencyScope(it) }
17+
}
18+
task.configure {
19+
options {
20+
(this as StandardJavadocDocletOptions).apply {
21+
val referencedModuleNames = projectDependencies.joinToString(",") { it.javaModuleName }
22+
addStringOption("-add-modules", referencedModuleNames)
23+
addStringOption("-add-reads", "${project.javaModuleName}=$referencedModuleNames")
24+
}
25+
}
26+
}
27+
}
28+
29+
}

junit-jupiter-api/junit-jupiter-api.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ dependencies {
2424
osgiVerification(projects.junitPlatformLauncher)
2525
}
2626

27+
javadocConventions {
28+
addExtraModuleReferences(projects.junitPlatformEngine, projects.junitPlatformLauncher, projects.junitJupiterParams)
29+
}
30+
2731
tasks {
2832
compileJava {
2933
options.compilerArgs.add("-Xlint:-module") // due to qualified exports

junit-platform-commons/junit-platform-commons.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ dependencies {
2121
testFixturesImplementation(libs.assertj)
2222
}
2323

24+
javadocConventions {
25+
addExtraModuleReferences(projects.junitPlatformEngine)
26+
}
27+
2428
tasks.compileJava {
2529
options.compilerArgs.add("-Xlint:-module") // due to qualified exports
2630
val moduleName = javaModuleName

junit-platform-engine/junit-platform-engine.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,7 @@ dependencies {
1919
osgiVerification(projects.junitJupiterEngine)
2020
osgiVerification(projects.junitPlatformLauncher)
2121
}
22+
23+
javadocConventions {
24+
addExtraModuleReferences(projects.junitPlatformLauncher)
25+
}

junit-platform-launcher/junit-platform-launcher.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ dependencies {
1616
osgiVerification(projects.junitJupiterEngine)
1717
}
1818

19+
javadocConventions {
20+
addExtraModuleReferences(projects.junitPlatformReporting)
21+
}
22+
1923
tasks {
2024
jar {
2125
bundle {

junit-platform-suite-api/junit-platform-suite-api.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@ dependencies {
1515
osgiVerification(projects.junitJupiterEngine)
1616
osgiVerification(projects.junitPlatformLauncher)
1717
}
18+
19+
javadocConventions {
20+
addExtraModuleReferences(projects.junitPlatformEngine, projects.junitPlatformLauncher)
21+
}

0 commit comments

Comments
 (0)