Skip to content

Commit e91ef8f

Browse files
manusaclaude
andcommitted
doc(javadoc): add cross-linking to maven-javadoc-plugin configuration
Adds <offlineLinks> and <links> configuration to the maven-javadoc-plugin in both the release and javadoc-test profiles so that generated javadocs contain clickable hyperlinks to referenced types from other Fabric8 modules and external dependencies (Jackson, SLF4J) via javadoc.io. Fabric8 cross-module links use offlineLinks with static element-list files (in doc/javadoc-links/) to avoid network fetches for unpublished SNAPSHOT versions. External dependency links use regular links. A `make generate-javadoc-links` target is provided to regenerate the element-list files from source directories when packages change. Fixes #1105 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 3c2246e commit e91ef8f

File tree

9 files changed

+139
-0
lines changed

9 files changed

+139
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* Fix #7422: (okhttp) Remove internal API usage and fix deprecated OkHttp 5 calls
1212

1313
#### Improvements
14+
* Fix #1105: Add javadoc cross-linking for Fabric8 modules and external dependencies
1415
* Fix #7422: bump okhttp from 4.12.0 to 5.3.2
1516

1617
#### Dependency Upgrade

Makefile

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@ format-java:
8080
.PHONY: format
8181
format: format-license format-java
8282

83+
JAVADOC_LINK_MODULES = \
84+
kubernetes-model-core:kubernetes-model-generator/kubernetes-model-core \
85+
kubernetes-model-common:kubernetes-model-generator/kubernetes-model-common \
86+
kubernetes-client-api:kubernetes-client-api \
87+
kubernetes-client:kubernetes-client \
88+
openshift-client-api:openshift-client-api \
89+
openshift-client:openshift-client
90+
91+
.PHONY: generate-javadoc-links
92+
generate-javadoc-links:
93+
@for entry in $(JAVADOC_LINK_MODULES); do \
94+
name=$${entry%%:*}; \
95+
path=$${entry##*:}; \
96+
mkdir -p doc/javadoc-links/$$name; \
97+
{ find $$path/src/main/java $$path/src/generated/java $$path/target/generated-sources/annotations -name "*.java" 2>/dev/null || true; } | \
98+
sed 's|.*/main/java/||;s|.*/generated/java/||;s|.*/generated-sources/annotations/||;s|/[^/]*\.java$$||;s|/|.|g' | \
99+
sort -u > doc/javadoc-links/$$name/element-list; \
100+
echo "Generated doc/javadoc-links/$$name/element-list"; \
101+
done
102+
83103
.PHONY: quickly
84104
quickly: clean
85105
mvn $(MAVEN_ARGS) install -DskipTests -Djacoco.skip=true
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
io.fabric8.kubernetes.client
2+
io.fabric8.kubernetes.client.dsl
3+
io.fabric8.kubernetes.client.dsl.base
4+
io.fabric8.kubernetes.client.extended.leaderelection
5+
io.fabric8.kubernetes.client.extended.leaderelection.resourcelock
6+
io.fabric8.kubernetes.client.extended.run
7+
io.fabric8.kubernetes.client.extension
8+
io.fabric8.kubernetes.client.http
9+
io.fabric8.kubernetes.client.informers
10+
io.fabric8.kubernetes.client.informers.cache
11+
io.fabric8.kubernetes.client.internal
12+
io.fabric8.kubernetes.client.lib
13+
io.fabric8.kubernetes.client.readiness
14+
io.fabric8.kubernetes.client.utils
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
io.fabric8.kubernetes.client.dsl.internal
2+
io.fabric8.kubernetes.client.dsl.internal.apps.v1
3+
io.fabric8.kubernetes.client.dsl.internal.batch.v1
4+
io.fabric8.kubernetes.client.dsl.internal.certificates.v1
5+
io.fabric8.kubernetes.client.dsl.internal.certificates.v1beta1
6+
io.fabric8.kubernetes.client.dsl.internal.core.v1
7+
io.fabric8.kubernetes.client.dsl.internal.extensions.v1beta1
8+
io.fabric8.kubernetes.client.dsl.internal.uploadable
9+
io.fabric8.kubernetes.client.impl
10+
io.fabric8.kubernetes.client.informers.impl
11+
io.fabric8.kubernetes.client.informers.impl.cache
12+
io.fabric8.kubernetes.client.osgi
13+
io.fabric8.kubernetes.client.utils.internal
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
io.fabric8.kubernetes.api.builder
2+
io.fabric8.kubernetes.model
3+
io.fabric8.kubernetes.model.annotation
4+
io.fabric8.kubernetes.model.jackson
5+
io.fabric8.kubernetes.model.util
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
io.fabric8.kubernetes.api
2+
io.fabric8.kubernetes.api.model
3+
io.fabric8.kubernetes.api.model.clusterapi.v1beta1
4+
io.fabric8.kubernetes.api.model.runtime
5+
io.fabric8.kubernetes.api.model.version
6+
io.fabric8.kubernetes.internal
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
io.fabric8.openshift.client
2+
io.fabric8.openshift.client.dsl
3+
io.fabric8.openshift.client.dsl.buildconfig
4+
io.fabric8.openshift.client.readiness
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
io.fabric8.openshift.client.dsl.internal
2+
io.fabric8.openshift.client.dsl.internal.apps
3+
io.fabric8.openshift.client.dsl.internal.authorization
4+
io.fabric8.openshift.client.dsl.internal.build
5+
io.fabric8.openshift.client.dsl.internal.core
6+
io.fabric8.openshift.client.dsl.internal.project
7+
io.fabric8.openshift.client.impl
8+
io.fabric8.openshift.client.internal
9+
io.fabric8.openshift.client.osgi

pom.xml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@
187187
${project.build.sourceDirectory};
188188
${project.build.directory}/generated-sources/annotations;
189189
</javadoc.sourcepath>
190+
<javadoc.links>https://javadoc.io/doc</javadoc.links>
190191

191192
<osgi.import />
192193
<osgi.export />
@@ -1399,6 +1400,39 @@
13991400
</dependencySourceIncludes>
14001401
<excludePackageNames>${javadoc.package.excludes}</excludePackageNames>
14011402
<sourcepath>${javadoc.sourcepath}</sourcepath>
1403+
<additionalJOption>-J-Dhttp.agent=maven-javadoc-plugin</additionalJOption>
1404+
<detectOfflineLinks>false</detectOfflineLinks>
1405+
<offlineLinks>
1406+
<offlineLink>
1407+
<url>${javadoc.links}/${project.groupId}/kubernetes-model-core/${project.version}</url>
1408+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-model-core</location>
1409+
</offlineLink>
1410+
<offlineLink>
1411+
<url>${javadoc.links}/${project.groupId}/kubernetes-model-common/${project.version}</url>
1412+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-model-common</location>
1413+
</offlineLink>
1414+
<offlineLink>
1415+
<url>${javadoc.links}/${project.groupId}/kubernetes-client-api/${project.version}</url>
1416+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-client-api</location>
1417+
</offlineLink>
1418+
<offlineLink>
1419+
<url>${javadoc.links}/${project.groupId}/kubernetes-client/${project.version}</url>
1420+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-client</location>
1421+
</offlineLink>
1422+
<offlineLink>
1423+
<url>${javadoc.links}/${project.groupId}/openshift-client-api/${project.version}</url>
1424+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/openshift-client-api</location>
1425+
</offlineLink>
1426+
<offlineLink>
1427+
<url>${javadoc.links}/${project.groupId}/openshift-client/${project.version}</url>
1428+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/openshift-client</location>
1429+
</offlineLink>
1430+
</offlineLinks>
1431+
<links>
1432+
<link>${javadoc.links}/com.fasterxml.jackson.core/jackson-databind/${jackson.version}</link>
1433+
<link>${javadoc.links}/com.fasterxml.jackson.core/jackson-core/${jackson.version}</link>
1434+
<link>${javadoc.links}/org.slf4j/slf4j-api/${slf4j.version}</link>
1435+
</links>
14021436
</configuration>
14031437
<executions>
14041438
<execution>
@@ -1502,6 +1536,39 @@
15021536
</dependencySourceIncludes>
15031537
<excludePackageNames>${javadoc.package.excludes}</excludePackageNames>
15041538
<sourcepath>${javadoc.sourcepath}</sourcepath>
1539+
<additionalJOption>-J-Dhttp.agent=maven-javadoc-plugin</additionalJOption>
1540+
<detectOfflineLinks>false</detectOfflineLinks>
1541+
<offlineLinks>
1542+
<offlineLink>
1543+
<url>${javadoc.links}/${project.groupId}/kubernetes-model-core/${project.version}</url>
1544+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-model-core</location>
1545+
</offlineLink>
1546+
<offlineLink>
1547+
<url>${javadoc.links}/${project.groupId}/kubernetes-model-common/${project.version}</url>
1548+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-model-common</location>
1549+
</offlineLink>
1550+
<offlineLink>
1551+
<url>${javadoc.links}/${project.groupId}/kubernetes-client-api/${project.version}</url>
1552+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-client-api</location>
1553+
</offlineLink>
1554+
<offlineLink>
1555+
<url>${javadoc.links}/${project.groupId}/kubernetes-client/${project.version}</url>
1556+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/kubernetes-client</location>
1557+
</offlineLink>
1558+
<offlineLink>
1559+
<url>${javadoc.links}/${project.groupId}/openshift-client-api/${project.version}</url>
1560+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/openshift-client-api</location>
1561+
</offlineLink>
1562+
<offlineLink>
1563+
<url>${javadoc.links}/${project.groupId}/openshift-client/${project.version}</url>
1564+
<location>${maven.multiModuleProjectDirectory}/doc/javadoc-links/openshift-client</location>
1565+
</offlineLink>
1566+
</offlineLinks>
1567+
<links>
1568+
<link>${javadoc.links}/com.fasterxml.jackson.core/jackson-databind/${jackson.version}</link>
1569+
<link>${javadoc.links}/com.fasterxml.jackson.core/jackson-core/${jackson.version}</link>
1570+
<link>${javadoc.links}/org.slf4j/slf4j-api/${slf4j.version}</link>
1571+
</links>
15051572
</configuration>
15061573
<executions>
15071574
<execution>

0 commit comments

Comments
 (0)