From eb89eb142d91a92de2f5bac22bf05285eddb05bb Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 26 May 2025 12:02:34 +0200 Subject: [PATCH 1/4] Aggregate javadoc using build-logic This PR has a few parts to it: 1. Adds a new `build-logic` module to organize our build logic. 2. Adds two convention plugins. - `sentry.javadoc` publishes the javadoc to a consumable configuration. - `sentry.javadoc.aggregate` consumes the published javadoc and aggregates them in the root build folder. 3. Deletes the `stylesheet.css`. This was causing the javadoc to look unusable. Deleting it fixes this. 4. Each subproject publishes the javadoc to its own subfolder. The previous behavior would overwrite the javadoc with each new project in the same directory which meant some parts of the javadoc were unreachable. The producer/consumer configuration is based on this blog post: https://www.liutikas.net/2024/12/11/Together-In-Isolation.html It should be project isolation compatible. --- CHANGELOG.md | 2 +- build-logic/build.gradle.kts | 7 + build-logic/settings.gradle.kts | 1 + .../io/sentry/gradle/AggregateJavadoc.kt | 36 ++ .../sentry.javadoc.aggregate.gradle.kts | 28 + .../src/main/kotlin/sentry.javadoc.gradle.kts | 27 + build.gradle.kts | 3 +- docs/stylesheet.css | 569 ------------------ sentry-apache-http-client-5/build.gradle.kts | 1 + sentry-apollo-3/build.gradle.kts | 1 + sentry-apollo-4/build.gradle.kts | 1 + sentry-apollo/build.gradle.kts | 1 + sentry-graphql-22/build.gradle.kts | 1 + sentry-graphql-core/build.gradle.kts | 1 + sentry-graphql/build.gradle.kts | 1 + sentry-jdbc/build.gradle.kts | 1 + sentry-jul/build.gradle.kts | 1 + sentry-kotlin-extensions/build.gradle.kts | 1 + sentry-log4j2/build.gradle.kts | 1 + sentry-logback/build.gradle.kts | 1 + sentry-okhttp/build.gradle.kts | 1 + sentry-openfeign/build.gradle.kts | 1 + .../build.gradle.kts | 1 + .../build.gradle.kts | 1 + .../build.gradle.kts | 1 + .../build.gradle.kts | 1 + .../build.gradle.kts | 1 + .../build.gradle.kts | 1 + sentry-quartz/build.gradle.kts | 1 + sentry-reactor/build.gradle.kts | 1 + sentry-servlet-jakarta/build.gradle.kts | 1 + sentry-servlet/build.gradle.kts | 1 + sentry-spring-boot-jakarta/build.gradle.kts | 1 + .../build.gradle.kts | 1 + sentry-spring-boot-starter/build.gradle.kts | 1 + sentry-spring-boot/build.gradle.kts | 1 + sentry-spring-jakarta/build.gradle.kts | 1 + sentry-spring/build.gradle.kts | 1 + sentry-system-test-support/build.gradle.kts | 1 + sentry-test-support/build.gradle.kts | 1 + sentry/build.gradle.kts | 1 + settings.gradle.kts | 2 +- 42 files changed, 136 insertions(+), 572 deletions(-) create mode 100644 build-logic/build.gradle.kts create mode 100644 build-logic/settings.gradle.kts create mode 100644 build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt create mode 100644 build-logic/src/main/kotlin/sentry.javadoc.aggregate.gradle.kts create mode 100644 build-logic/src/main/kotlin/sentry.javadoc.gradle.kts delete mode 100644 docs/stylesheet.css diff --git a/CHANGELOG.md b/CHANGELOG.md index dfa6d91cd5..6130e73aa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,8 @@ ## Unreleased ### Fixes - - Send UI Profiling app start chunk when it finishes ([#4423](https://github.com/getsentry/sentry-java/pull/4423)) +- Republish Javadoc [#4457](https://github.com/getsentry/sentry-java/pull/4457) ## 8.13.2 diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts new file mode 100644 index 0000000000..cc02e636bd --- /dev/null +++ b/build-logic/build.gradle.kts @@ -0,0 +1,7 @@ +plugins { + `kotlin-dsl` +} + +repositories { + gradlePluginPortal() +} diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 0000000000..7fbbd448ef --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "build-logic" diff --git a/build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt b/build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt new file mode 100644 index 0000000000..fdf65524d9 --- /dev/null +++ b/build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt @@ -0,0 +1,36 @@ +package io.sentry.gradle + +import org.gradle.api.DefaultTask +import org.gradle.api.file.DirectoryProperty +import org.gradle.api.file.FileCollection +import org.gradle.api.file.FileSystemOperations +import org.gradle.api.provider.Property +import org.gradle.api.tasks.InputFiles +import org.gradle.api.tasks.Internal +import org.gradle.api.tasks.OutputDirectory +import org.gradle.api.tasks.TaskAction +import javax.inject.Inject + +abstract class AggregateJavadoc @Inject constructor( + @get:Internal val fs: FileSystemOperations +) : DefaultTask() { + @get:InputFiles + abstract val javadocFiles: Property + + @get:OutputDirectory + abstract val outputDir: DirectoryProperty + + @TaskAction + fun aggregate() { + javadocFiles.get().forEach { file -> + fs.copy { + // Get the third to last part (project name) to use as the directory name for the output + val parts = file.path.split('/') + val projectName = parts[parts.size - 4] + from(file) + // Use the project name as the output directory name so that each javadoc goes into its own directory + into(outputDir.get().file(projectName)) + } + } + } +} diff --git a/build-logic/src/main/kotlin/sentry.javadoc.aggregate.gradle.kts b/build-logic/src/main/kotlin/sentry.javadoc.aggregate.gradle.kts new file mode 100644 index 0000000000..55bcad98ba --- /dev/null +++ b/build-logic/src/main/kotlin/sentry.javadoc.aggregate.gradle.kts @@ -0,0 +1,28 @@ +import io.sentry.gradle.AggregateJavadoc +import org.gradle.api.attributes.Category +import org.gradle.api.attributes.LibraryElements +import org.gradle.kotlin.dsl.creating +import org.gradle.kotlin.dsl.getValue +import org.gradle.kotlin.dsl.named + +val javadocConsumer by configurations.creating { + isCanBeConsumed = false + isCanBeResolved = true + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named("javadoc")) + } +} + +subprojects { + javadocConsumer.dependencies.add(dependencies.create(this)) +} + +val javadocCollection = javadocConsumer.incoming.artifactView { lenient(true) }.files + +tasks.register("aggregateJavadoc", AggregateJavadoc::class) { + group = "documentation" + description = "Aggregates Javadocs from all subprojects into a single directory." + javadocFiles.set(javadocCollection) + outputDir.set(layout.buildDirectory.dir("docs/javadoc")) +} diff --git a/build-logic/src/main/kotlin/sentry.javadoc.gradle.kts b/build-logic/src/main/kotlin/sentry.javadoc.gradle.kts new file mode 100644 index 0000000000..7eb796a02f --- /dev/null +++ b/build-logic/src/main/kotlin/sentry.javadoc.gradle.kts @@ -0,0 +1,27 @@ +val javadocConfig: Configuration by configurations.creating { + isCanBeResolved = false + isCanBeConsumed = true + + attributes { + attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) + attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named("javadoc")) + } +} + +tasks.withType().configureEach { + setDestinationDir(project.layout.buildDirectory.file("docs/javadoc").get().asFile) + title = "${project.name} $version API" + val opts = options as StandardJavadocDocletOptions + opts.quiet() + opts.encoding = "UTF-8" + opts.memberLevel = JavadocMemberLevel.PROTECTED + opts.links = listOf( + "https://docs.oracle.com/javase/8/docs/api/", + "https://docs.spring.io/spring-framework/docs/current/javadoc-api/", + "https://docs.spring.io/spring-boot/docs/current/api/" + ) +} + +artifacts { + add(javadocConfig.name, tasks.named("javadoc")) +} diff --git a/build.gradle.kts b/build.gradle.kts index d5e75d5342..c9abc426f7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,6 +27,7 @@ plugins { alias(libs.plugins.errorprone) apply false alias(libs.plugins.gradle.versions) apply false alias(libs.plugins.spring.dependency.management) apply false + id("sentry.javadoc.aggregate") } buildscript { @@ -237,7 +238,7 @@ spotless { kotlin { target("**/*.kt") ktlint() - targetExclude("**/sentry-native/**") + targetExclude("**/sentry-native/**", "**/build/**") } kotlinGradle { target("**/*.kts") diff --git a/docs/stylesheet.css b/docs/stylesheet.css deleted file mode 100644 index 9ce22b2627..0000000000 --- a/docs/stylesheet.css +++ /dev/null @@ -1,569 +0,0 @@ -@import url('https://fonts.googleapis.com/css2?family=Rubik&display=swap'); - -body { - background-color:#ffffff; - color:#353833; - font-family: 'Rubik', sans-serif; - font-size:14px; - margin:0; -} -a:link, a:visited { - text-decoration:none; - color:#6c5fc7; -} -a:hover, a:focus { - text-decoration:none; - color:#EEA911; -} -a:active { - text-decoration:none; - color:#6c5fc7; -} -a[name] { - color:#353833; -} -a[name]:hover { - text-decoration:none; - color:#353833; -} -pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; -} -h1 { - font-size:20px; -} -h2 { - font-size:18px; -} -h3 { - font-size:16px; - font-style:italic; -} -h4 { - font-size:13px; -} -h5 { - font-size:12px; -} -h6 { - font-size:11px; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; -} -table tr td dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -/* -Document title and Copyright styles -*/ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.aboutLanguage { - float:right; - padding:0px 21px; - font-size:11px; - z-index:200; - margin-top:-9px; -} -.legalCopy { - margin-left:.5em; -} -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#EEA911; -} -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* -Navigation bar styles -*/ -.bar { - background-color:#8c5393; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:11px; - margin:0; -} -.topNav { - background-color:#8c5393; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.bottomNav { - margin-top:10px; - background-color:#8c5393; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.subNav { - background-color:#dee3e9; - float:left; - width:100%; - overflow:hidden; - font-size:12px; -} -.subNav div { - clear:left; - float:left; - padding:0 0 5px 6px; - text-transform:uppercase; -} -ul.navList, ul.subNavList { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.navList li{ - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -ul.subNavList li{ - list-style:none; - float:left; -} -.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { - color:#FFFFFF; - text-decoration:none; - text-transform:uppercase; -} -.topNav a:hover, .bottomNav a:hover { - text-decoration:none; - color:#EEA911; - text-transform:uppercase; -} -.navBarCell1Rev { - background-color:#F8981D; - color:white; - margin: auto 5px; -} -.skipNav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* -Page header and footer styles -*/ -.header, .footer { - clear:both; - margin:0 20px; - padding:5px 0 0 0; -} -.indexHeader { - margin:10px; - position:relative; -} -.indexHeader span{ - margin-right:15px; -} -.indexHeader h1 { - font-size:13px; -} -.title { - color:#2c4557; - margin:10px 0; -} -.subTitle { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 15px 0; - padding:0; -} -.footer ul { - margin:20px 0 5px 0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:13px; -} -/* -Heading styles -*/ -div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList ul.blockList li.blockList h3 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList li.blockList h3 { - padding:0; - margin:15px 0; -} -ul.blockList li.blockList h2 { - padding:0px 0 20px 0; -} -/* -Page layout container styles -*/ -.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { - clear:both; - padding:10px 20px; - position:relative; -} -.indexContainer { - margin:10px; - position:relative; - font-size:12px; -} -.indexContainer h2 { - font-size:13px; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; - padding-top:2px; -} -.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { - font-size:12px; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { - margin:5px 0 10px 0px; - font-size:14px; - font-family:'DejaVu Sans Mono',monospace; -} -.serializedFormContainer dl.nameValue dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -.serializedFormContainer dl.nameValue dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* -List styles -*/ -ul.horizontal li { - display:inline; - font-size:0.9em; -} -ul.inheritance { - margin:0; - padding:0; -} -ul.inheritance li { - display:inline; - list-style:none; -} -ul.inheritance li ul.inheritance { - margin-left:15px; - padding-left:15px; - padding-top:1px; -} -ul.blockList, ul.blockListLast { - margin:10px 0 10px 0; - padding:0; -} -ul.blockList li.blockList, ul.blockListLast li.blockList { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { - padding:0px 20px 5px 10px; - border:1px solid #ededed; - background-color:#f8f8f8; -} -ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { - padding:0 0 5px 8px; - background-color:#ffffff; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { - margin-left:0; - padding-left:0; - padding-bottom:15px; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { - list-style:none; - border-bottom:none; - padding-bottom:0; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* -Table styles -*/ -.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { - width:100%; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; -} -.overviewSummary, .memberSummary { - padding:0px; -} -.overviewSummary caption, .memberSummary caption, .typeSummary caption, -.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:white; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - padding-top:10px; - padding-left:1px; - margin:0px; - white-space:pre; -} -.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, -.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, -.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, -.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, -.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, -.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, -.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, -.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { - color:#FFFFFF; -} -.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, -.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; - display:inline-block; - float:left; - background-color:#F8981D; - border: none; - height:16px; -} -.memberSummary caption span.activeTableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#F8981D; - height:16px; -} -.memberSummary caption span.tableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#8c5393; - height:16px; -} -.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { - padding-top:0px; - padding-left:0px; - padding-right:0px; - background-image:none; - float:none; - display:inline; -} -.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, -.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { - display:none; - width:5px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .activeTableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .tableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - background-color:#8c5393; - float:left; - -} -.overviewSummary td, .memberSummary td, .typeSummary td, -.useSummary td, .constantsSummary td, .deprecatedSummary td { - text-align:left; - padding:0px 0px 12px 10px; -} -th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, -td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ - vertical-align:top; - padding-right:0px; - padding-top:8px; - padding-bottom:3px; -} -th.colFirst, th.colLast, th.colOne, .constantsSummary th { - background:#dee3e9; - text-align:left; - padding:8px 3px 3px 7px; -} -td.colFirst, th.colFirst { - white-space:nowrap; - font-size:13px; -} -td.colLast, th.colLast { - font-size:13px; -} -td.colOne, th.colOne { - font-size:13px; -} -.overviewSummary td.colFirst, .overviewSummary th.colFirst, -.useSummary td.colFirst, .useSummary th.colFirst, -.overviewSummary td.colOne, .overviewSummary th.colOne, -.memberSummary td.colFirst, .memberSummary th.colFirst, -.memberSummary td.colOne, .memberSummary th.colOne, -.typeSummary td.colFirst{ - width:25%; - vertical-align:top; -} -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { - font-weight:bold; -} -.tableSubHeadingColor { - background-color:#EEEEFF; -} -.altColor { - background-color:#FFFFFF; -} -.rowColor { - background-color:#EEEEEF; -} -/* -Content styles -*/ -.description pre { - margin-top:0; -} -.deprecatedContent { - margin:0; - padding:10px 0; -} -.docSummary { - padding:0; -} - -ul.blockList ul.blockList ul.blockList li.blockList h3 { - font-style:normal; -} - -div.block { - font-size:14px; - font-family: 'Rubik', sans-serif; -} - -td.colLast div { - padding-top:0px; -} - - -td.colLast a { - padding-bottom:3px; -} -/* -Formatting effect styles -*/ -.sourceLineNo { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} -.block { - display:block; - margin:3px 10px 2px 0px; - color:#474747; -} -.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, -.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, -.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { - font-weight:bold; -} -.deprecationComment, .emphasizedPhrase, .interfaceName { - font-style:italic; -} - -div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, -div.block div.block span.interfaceName { - font-style:normal; -} - -div.contentContainer ul.blockList li.blockList h2{ - padding-bottom:0px; -} diff --git a/sentry-apache-http-client-5/build.gradle.kts b/sentry-apache-http-client-5/build.gradle.kts index 97b8c11c7c..9328a7210f 100644 --- a/sentry-apache-http-client-5/build.gradle.kts +++ b/sentry-apache-http-client-5/build.gradle.kts @@ -4,6 +4,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-apollo-3/build.gradle.kts b/sentry-apollo-3/build.gradle.kts index e6a9b53102..ece3f90c2e 100644 --- a/sentry-apollo-3/build.gradle.kts +++ b/sentry-apollo-3/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-apollo-4/build.gradle.kts b/sentry-apollo-4/build.gradle.kts index 690884e860..5575a92074 100644 --- a/sentry-apollo-4/build.gradle.kts +++ b/sentry-apollo-4/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-apollo/build.gradle.kts b/sentry-apollo/build.gradle.kts index ed3f111e5d..e0e00d5357 100644 --- a/sentry-apollo/build.gradle.kts +++ b/sentry-apollo/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-graphql-22/build.gradle.kts b/sentry-graphql-22/build.gradle.kts index 840d9d7169..d8ebdab956 100644 --- a/sentry-graphql-22/build.gradle.kts +++ b/sentry-graphql-22/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-graphql-core/build.gradle.kts b/sentry-graphql-core/build.gradle.kts index 03449a3a3d..30c9eb0a64 100644 --- a/sentry-graphql-core/build.gradle.kts +++ b/sentry-graphql-core/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-graphql/build.gradle.kts b/sentry-graphql/build.gradle.kts index 24e2fb3eff..ba7b3ef95b 100644 --- a/sentry-graphql/build.gradle.kts +++ b/sentry-graphql/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-jdbc/build.gradle.kts b/sentry-jdbc/build.gradle.kts index 7057338574..1abba376fe 100644 --- a/sentry-jdbc/build.gradle.kts +++ b/sentry-jdbc/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-jul/build.gradle.kts b/sentry-jul/build.gradle.kts index b579010004..72a3273f8d 100644 --- a/sentry-jul/build.gradle.kts +++ b/sentry-jul/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-kotlin-extensions/build.gradle.kts b/sentry-kotlin-extensions/build.gradle.kts index 2a581f997c..21c543ee11 100644 --- a/sentry-kotlin-extensions/build.gradle.kts +++ b/sentry-kotlin-extensions/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-log4j2/build.gradle.kts b/sentry-log4j2/build.gradle.kts index f6292d115c..674e5c4a7c 100644 --- a/sentry-log4j2/build.gradle.kts +++ b/sentry-log4j2/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-logback/build.gradle.kts b/sentry-logback/build.gradle.kts index cfd431fc8c..57d8ac16ed 100644 --- a/sentry-logback/build.gradle.kts +++ b/sentry-logback/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-okhttp/build.gradle.kts b/sentry-okhttp/build.gradle.kts index 173b573c89..ceaac7c526 100644 --- a/sentry-okhttp/build.gradle.kts +++ b/sentry-okhttp/build.gradle.kts @@ -6,6 +6,7 @@ plugins { `java-library` kotlin("jvm") jacoco + id("sentry.javadoc") alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) diff --git a/sentry-openfeign/build.gradle.kts b/sentry-openfeign/build.gradle.kts index 642e2df0d4..df195ffe1d 100644 --- a/sentry-openfeign/build.gradle.kts +++ b/sentry-openfeign/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts index 1a01652e3c..213c1dd8f4 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts @@ -2,6 +2,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { `java-library` + id("sentry.javadoc") id("com.gradleup.shadow") version "8.3.6" } diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts index 2b9659214e..3c1bc43a24 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts index ed355c49e8..fedf1fc495 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts @@ -1,5 +1,6 @@ plugins { `java-library` + id("sentry.javadoc") alias(libs.plugins.buildconfig) } diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts index 2c87a8f46f..c5ac804066 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts @@ -1,5 +1,6 @@ plugins { `java-library` + id("sentry.javadoc") alias(libs.plugins.buildconfig) } diff --git a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts index c7e7168b15..95a6e80b0e 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts index e5a1152aa6..a77106f861 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-quartz/build.gradle.kts b/sentry-quartz/build.gradle.kts index efbe4bda3b..5aa7a07192 100644 --- a/sentry-quartz/build.gradle.kts +++ b/sentry-quartz/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-reactor/build.gradle.kts b/sentry-reactor/build.gradle.kts index 75a4383763..f45d6bc368 100644 --- a/sentry-reactor/build.gradle.kts +++ b/sentry-reactor/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-servlet-jakarta/build.gradle.kts b/sentry-servlet-jakarta/build.gradle.kts index c8332ca91e..651f0a675f 100644 --- a/sentry-servlet-jakarta/build.gradle.kts +++ b/sentry-servlet-jakarta/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-servlet/build.gradle.kts b/sentry-servlet/build.gradle.kts index 60885889f4..68dd5deee1 100644 --- a/sentry-servlet/build.gradle.kts +++ b/sentry-servlet/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot-jakarta/build.gradle.kts b/sentry-spring-boot-jakarta/build.gradle.kts index 28a1d60a65..e93808aaa9 100644 --- a/sentry-spring-boot-jakarta/build.gradle.kts +++ b/sentry-spring-boot-jakarta/build.gradle.kts @@ -4,6 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot-starter-jakarta/build.gradle.kts b/sentry-spring-boot-starter-jakarta/build.gradle.kts index 6e06af3043..f5171d41ba 100644 --- a/sentry-spring-boot-starter-jakarta/build.gradle.kts +++ b/sentry-spring-boot-starter-jakarta/build.gradle.kts @@ -4,6 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot-starter/build.gradle.kts b/sentry-spring-boot-starter/build.gradle.kts index e8f164024b..37cda8c3e5 100644 --- a/sentry-spring-boot-starter/build.gradle.kts +++ b/sentry-spring-boot-starter/build.gradle.kts @@ -4,6 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot/build.gradle.kts b/sentry-spring-boot/build.gradle.kts index 642fd71c5e..fe81ca2855 100644 --- a/sentry-spring-boot/build.gradle.kts +++ b/sentry-spring-boot/build.gradle.kts @@ -4,6 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-jakarta/build.gradle.kts b/sentry-spring-jakarta/build.gradle.kts index 24ce47e6bb..f285d9a84b 100644 --- a/sentry-spring-jakarta/build.gradle.kts +++ b/sentry-spring-jakarta/build.gradle.kts @@ -5,6 +5,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring/build.gradle.kts b/sentry-spring/build.gradle.kts index acac9bcff2..e0675897ca 100644 --- a/sentry-spring/build.gradle.kts +++ b/sentry-spring/build.gradle.kts @@ -5,6 +5,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-system-test-support/build.gradle.kts b/sentry-system-test-support/build.gradle.kts index 56cb6b4a36..873475ac9a 100644 --- a/sentry-system-test-support/build.gradle.kts +++ b/sentry-system-test-support/build.gradle.kts @@ -1,5 +1,6 @@ plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-test-support/build.gradle.kts b/sentry-test-support/build.gradle.kts index 31a5e82646..5460f191b3 100644 --- a/sentry-test-support/build.gradle.kts +++ b/sentry-test-support/build.gradle.kts @@ -1,5 +1,6 @@ plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry/build.gradle.kts b/sentry/build.gradle.kts index e24967f793..797b56083b 100644 --- a/sentry/build.gradle.kts +++ b/sentry/build.gradle.kts @@ -3,6 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` + id("sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/settings.gradle.kts b/settings.gradle.kts index 7b4ead5389..7081c58fbe 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,7 +17,7 @@ dependencyResolutionManagement { rootProject.name = "sentry-root" rootProject.buildFileName = "build.gradle.kts" - +includeBuild("build-logic") include( "sentry", "sentry-kotlin-extensions", From e9209f6a03e534cd211b6d77cbfba3e2807f479e Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Tue, 27 May 2025 17:23:36 +0200 Subject: [PATCH 2/4] Ignore `.kotlin` in all directories --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8391451622..95ed0f498a 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,4 @@ distributions/ sentry-spring-boot-starter-jakarta/src/main/resources/META-INF/spring.factories sentry-samples/sentry-samples-spring-boot-jakarta/spy.log spy.log -buildSrc/.kotlin/ +.kotlin From 8e54d1ae4da311df8ce55fecbf311158f19957c3 Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Wed, 28 May 2025 09:14:15 +0200 Subject: [PATCH 3/4] Add back makefile and github workflow --- .github/workflows/generate-javadocs.yml | 34 +++++++++++++++++++++++++ Makefile | 9 ++++--- 2 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/generate-javadocs.yml diff --git a/.github/workflows/generate-javadocs.yml b/.github/workflows/generate-javadocs.yml new file mode 100644 index 0000000000..b0871c17a1 --- /dev/null +++ b/.github/workflows/generate-javadocs.yml @@ -0,0 +1,34 @@ +name: 'Generate Javadocs' +on: + release: + types: [released] + +jobs: + build-and-deploy-javadocs: + name: Build and deploy Javadocs + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@8379f6a1328ee0e06e2bb424dadb7b159856a326 + + - name: Generate Aggregate Javadocs + run: | + ./gradlew aggregateJavadocs + - name: Deploy + uses: JamesIves/github-pages-deploy-action@6c2d9db40f9296374acc17b90404b6e8864128c8 # pin@4.7.3 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages + FOLDER: build/docs/javadoc + CLEAN: true diff --git a/Makefile b/Makefile index 2aa7bcfd06..3fff2c01ff 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -.PHONY: all clean compile dryRelease update stop checkFormat format api assembleBenchmarkTestRelease assembleUiTestRelease assembleUiTestCriticalRelease createCoverageReports runUiTestCritical check preMerge publish +.PHONY: all clean compile javadocs dryRelease update stop checkFormat format api assembleBenchmarkTestRelease assembleUiTestRelease assembleUiTestCriticalRelease createCoverageReports runUiTestCritical check preMerge publish -all: stop clean compile createCoverageReports +all: stop clean javadocs compile createCoverageReports assembleBenchmarks: assembleBenchmarkTestRelease assembleUiTests: assembleUiTestRelease preMerge: check createCoverageReports @@ -15,9 +15,12 @@ clean: compile: ./gradlew build +javadocs: + ./gradlew aggregateJavadocs + # do a dry release (like a local deploy) dryRelease: - ./gradlew distZip --no-build-cache --no-configuration-cache + ./gradlew aggregateJavadocs distZip --no-build-cache --no-configuration-cache # check for dependencies update update: From 9c330710a916b4ed43569eb85e2a134ae62022cd Mon Sep 17 00:00:00 2001 From: Nelson Osacky Date: Mon, 2 Jun 2025 07:11:26 -0700 Subject: [PATCH 4/4] Address review comments --- CHANGELOG.md | 1 + ...e.kts => io.sentry.javadoc.aggregate.gradle.kts} | 7 ++++--- ...adoc.gradle.kts => io.sentry.javadoc.gradle.kts} | 0 .../kotlin/io/sentry/gradle/AggregateJavadoc.kt | 13 +++++++++---- build.gradle.kts | 2 +- sentry-apache-http-client-5/build.gradle.kts | 2 +- sentry-apollo-3/build.gradle.kts | 2 +- sentry-apollo-4/build.gradle.kts | 2 +- sentry-apollo/build.gradle.kts | 2 +- sentry-graphql-22/build.gradle.kts | 2 +- sentry-graphql-core/build.gradle.kts | 2 +- sentry-graphql/build.gradle.kts | 2 +- sentry-jdbc/build.gradle.kts | 2 +- sentry-jul/build.gradle.kts | 2 +- sentry-kotlin-extensions/build.gradle.kts | 2 +- sentry-log4j2/build.gradle.kts | 2 +- sentry-logback/build.gradle.kts | 2 +- sentry-okhttp/build.gradle.kts | 2 +- sentry-openfeign/build.gradle.kts | 2 +- .../sentry-opentelemetry-agent/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../sentry-opentelemetry-agentless/build.gradle.kts | 2 +- .../sentry-opentelemetry-bootstrap/build.gradle.kts | 2 +- .../sentry-opentelemetry-core/build.gradle.kts | 2 +- sentry-quartz/build.gradle.kts | 2 +- sentry-reactor/build.gradle.kts | 2 +- sentry-servlet-jakarta/build.gradle.kts | 2 +- sentry-servlet/build.gradle.kts | 2 +- sentry-spring-boot-jakarta/build.gradle.kts | 2 +- sentry-spring-boot-starter-jakarta/build.gradle.kts | 2 +- sentry-spring-boot-starter/build.gradle.kts | 2 +- sentry-spring-boot/build.gradle.kts | 2 +- sentry-spring-jakarta/build.gradle.kts | 2 +- sentry-spring/build.gradle.kts | 2 +- sentry-system-test-support/build.gradle.kts | 2 +- sentry-test-support/build.gradle.kts | 2 +- sentry/build.gradle.kts | 2 +- 38 files changed, 48 insertions(+), 41 deletions(-) rename build-logic/src/main/kotlin/{sentry.javadoc.aggregate.gradle.kts => io.sentry.javadoc.aggregate.gradle.kts} (76%) rename build-logic/src/main/kotlin/{sentry.javadoc.gradle.kts => io.sentry.javadoc.gradle.kts} (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6130e73aa9..b94106289a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Unreleased ### Fixes + - Send UI Profiling app start chunk when it finishes ([#4423](https://github.com/getsentry/sentry-java/pull/4423)) - Republish Javadoc [#4457](https://github.com/getsentry/sentry-java/pull/4457) diff --git a/build-logic/src/main/kotlin/sentry.javadoc.aggregate.gradle.kts b/build-logic/src/main/kotlin/io.sentry.javadoc.aggregate.gradle.kts similarity index 76% rename from build-logic/src/main/kotlin/sentry.javadoc.aggregate.gradle.kts rename to build-logic/src/main/kotlin/io.sentry.javadoc.aggregate.gradle.kts index 55bcad98ba..d118c9543a 100644 --- a/build-logic/src/main/kotlin/sentry.javadoc.aggregate.gradle.kts +++ b/build-logic/src/main/kotlin/io.sentry.javadoc.aggregate.gradle.kts @@ -5,7 +5,7 @@ import org.gradle.kotlin.dsl.creating import org.gradle.kotlin.dsl.getValue import org.gradle.kotlin.dsl.named -val javadocConsumer by configurations.creating { +val javadocPublisher by configurations.creating { isCanBeConsumed = false isCanBeResolved = true attributes { @@ -15,14 +15,15 @@ val javadocConsumer by configurations.creating { } subprojects { - javadocConsumer.dependencies.add(dependencies.create(this)) + javadocPublisher.dependencies.add(dependencies.create(this)) } -val javadocCollection = javadocConsumer.incoming.artifactView { lenient(true) }.files +val javadocCollection = javadocPublisher.incoming.artifactView { lenient(true) }.files tasks.register("aggregateJavadoc", AggregateJavadoc::class) { group = "documentation" description = "Aggregates Javadocs from all subprojects into a single directory." javadocFiles.set(javadocCollection) + rootDir.set(layout.projectDirectory) outputDir.set(layout.buildDirectory.dir("docs/javadoc")) } diff --git a/build-logic/src/main/kotlin/sentry.javadoc.gradle.kts b/build-logic/src/main/kotlin/io.sentry.javadoc.gradle.kts similarity index 100% rename from build-logic/src/main/kotlin/sentry.javadoc.gradle.kts rename to build-logic/src/main/kotlin/io.sentry.javadoc.gradle.kts diff --git a/build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt b/build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt index fdf65524d9..f6b9ec6a0f 100644 --- a/build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt +++ b/build-logic/src/main/kotlin/io/sentry/gradle/AggregateJavadoc.kt @@ -17,6 +17,10 @@ abstract class AggregateJavadoc @Inject constructor( @get:InputFiles abstract val javadocFiles: Property + // Marked as Internal since this is only used to relativize the paths for the output directories + @get:Internal + abstract val rootDir: DirectoryProperty + @get:OutputDirectory abstract val outputDir: DirectoryProperty @@ -24,12 +28,13 @@ abstract class AggregateJavadoc @Inject constructor( fun aggregate() { javadocFiles.get().forEach { file -> fs.copy { - // Get the third to last part (project name) to use as the directory name for the output - val parts = file.path.split('/') - val projectName = parts[parts.size - 4] + // Get the relative path of the project directory to the root directory + val relativePath = file.relativeTo(rootDir.get().asFile) + // Remove the 'build/docs/javadoc' part from the path + val projectPath = relativePath.path.replace("build/docs/javadoc", "") from(file) // Use the project name as the output directory name so that each javadoc goes into its own directory - into(outputDir.get().file(projectName)) + into(outputDir.get().file(projectPath)) } } } diff --git a/build.gradle.kts b/build.gradle.kts index c9abc426f7..4ca65528dc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -27,7 +27,7 @@ plugins { alias(libs.plugins.errorprone) apply false alias(libs.plugins.gradle.versions) apply false alias(libs.plugins.spring.dependency.management) apply false - id("sentry.javadoc.aggregate") + id("io.sentry.javadoc.aggregate") } buildscript { diff --git a/sentry-apache-http-client-5/build.gradle.kts b/sentry-apache-http-client-5/build.gradle.kts index 9328a7210f..fb1f1888c9 100644 --- a/sentry-apache-http-client-5/build.gradle.kts +++ b/sentry-apache-http-client-5/build.gradle.kts @@ -4,7 +4,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-apollo-3/build.gradle.kts b/sentry-apollo-3/build.gradle.kts index ece3f90c2e..52be4966f0 100644 --- a/sentry-apollo-3/build.gradle.kts +++ b/sentry-apollo-3/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-apollo-4/build.gradle.kts b/sentry-apollo-4/build.gradle.kts index 5575a92074..3478d4c212 100644 --- a/sentry-apollo-4/build.gradle.kts +++ b/sentry-apollo-4/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-apollo/build.gradle.kts b/sentry-apollo/build.gradle.kts index e0e00d5357..8ce2fc6db1 100644 --- a/sentry-apollo/build.gradle.kts +++ b/sentry-apollo/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-graphql-22/build.gradle.kts b/sentry-graphql-22/build.gradle.kts index d8ebdab956..5c416356c3 100644 --- a/sentry-graphql-22/build.gradle.kts +++ b/sentry-graphql-22/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-graphql-core/build.gradle.kts b/sentry-graphql-core/build.gradle.kts index 30c9eb0a64..484d16b969 100644 --- a/sentry-graphql-core/build.gradle.kts +++ b/sentry-graphql-core/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-graphql/build.gradle.kts b/sentry-graphql/build.gradle.kts index ba7b3ef95b..cbde65e12a 100644 --- a/sentry-graphql/build.gradle.kts +++ b/sentry-graphql/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-jdbc/build.gradle.kts b/sentry-jdbc/build.gradle.kts index 1abba376fe..0ac41f7958 100644 --- a/sentry-jdbc/build.gradle.kts +++ b/sentry-jdbc/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-jul/build.gradle.kts b/sentry-jul/build.gradle.kts index 72a3273f8d..5d9de33a05 100644 --- a/sentry-jul/build.gradle.kts +++ b/sentry-jul/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-kotlin-extensions/build.gradle.kts b/sentry-kotlin-extensions/build.gradle.kts index 21c543ee11..47f5743915 100644 --- a/sentry-kotlin-extensions/build.gradle.kts +++ b/sentry-kotlin-extensions/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-log4j2/build.gradle.kts b/sentry-log4j2/build.gradle.kts index 674e5c4a7c..033db00987 100644 --- a/sentry-log4j2/build.gradle.kts +++ b/sentry-log4j2/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-logback/build.gradle.kts b/sentry-logback/build.gradle.kts index 57d8ac16ed..bca565baa1 100644 --- a/sentry-logback/build.gradle.kts +++ b/sentry-logback/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-okhttp/build.gradle.kts b/sentry-okhttp/build.gradle.kts index ceaac7c526..c975184c37 100644 --- a/sentry-okhttp/build.gradle.kts +++ b/sentry-okhttp/build.gradle.kts @@ -6,7 +6,7 @@ plugins { `java-library` kotlin("jvm") jacoco - id("sentry.javadoc") + id("io.sentry.javadoc") alias(libs.plugins.errorprone) alias(libs.plugins.gradle.versions) alias(libs.plugins.buildconfig) diff --git a/sentry-openfeign/build.gradle.kts b/sentry-openfeign/build.gradle.kts index df195ffe1d..860a7115bf 100644 --- a/sentry-openfeign/build.gradle.kts +++ b/sentry-openfeign/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts index 213c1dd8f4..61cdbd0350 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agent/build.gradle.kts @@ -2,7 +2,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") id("com.gradleup.shadow") version "8.3.6" } diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts index 3c1bc43a24..32dd5cf648 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentcustomization/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts index fedf1fc495..5fa3fbba3c 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentless-spring/build.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") alias(libs.plugins.buildconfig) } diff --git a/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts index c5ac804066..0ff3e72b6f 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-agentless/build.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") alias(libs.plugins.buildconfig) } diff --git a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts index 95a6e80b0e..8af85f92a4 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts b/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts index a77106f861..5a6c00a043 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts +++ b/sentry-opentelemetry/sentry-opentelemetry-core/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-quartz/build.gradle.kts b/sentry-quartz/build.gradle.kts index 5aa7a07192..85bebbf0e8 100644 --- a/sentry-quartz/build.gradle.kts +++ b/sentry-quartz/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-reactor/build.gradle.kts b/sentry-reactor/build.gradle.kts index f45d6bc368..6d092e352e 100644 --- a/sentry-reactor/build.gradle.kts +++ b/sentry-reactor/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-servlet-jakarta/build.gradle.kts b/sentry-servlet-jakarta/build.gradle.kts index 651f0a675f..114a61bd25 100644 --- a/sentry-servlet-jakarta/build.gradle.kts +++ b/sentry-servlet-jakarta/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-servlet/build.gradle.kts b/sentry-servlet/build.gradle.kts index 68dd5deee1..9689f062f5 100644 --- a/sentry-servlet/build.gradle.kts +++ b/sentry-servlet/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot-jakarta/build.gradle.kts b/sentry-spring-boot-jakarta/build.gradle.kts index e93808aaa9..6479d08ac0 100644 --- a/sentry-spring-boot-jakarta/build.gradle.kts +++ b/sentry-spring-boot-jakarta/build.gradle.kts @@ -4,7 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot-starter-jakarta/build.gradle.kts b/sentry-spring-boot-starter-jakarta/build.gradle.kts index f5171d41ba..2510ad9db9 100644 --- a/sentry-spring-boot-starter-jakarta/build.gradle.kts +++ b/sentry-spring-boot-starter-jakarta/build.gradle.kts @@ -4,7 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot-starter/build.gradle.kts b/sentry-spring-boot-starter/build.gradle.kts index 37cda8c3e5..e8167fed79 100644 --- a/sentry-spring-boot-starter/build.gradle.kts +++ b/sentry-spring-boot-starter/build.gradle.kts @@ -4,7 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-boot/build.gradle.kts b/sentry-spring-boot/build.gradle.kts index fe81ca2855..2b7e9a2a8d 100644 --- a/sentry-spring-boot/build.gradle.kts +++ b/sentry-spring-boot/build.gradle.kts @@ -4,7 +4,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring-jakarta/build.gradle.kts b/sentry-spring-jakarta/build.gradle.kts index f285d9a84b..71867a8c8b 100644 --- a/sentry-spring-jakarta/build.gradle.kts +++ b/sentry-spring-jakarta/build.gradle.kts @@ -5,7 +5,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-spring/build.gradle.kts b/sentry-spring/build.gradle.kts index e0675897ca..51bd0ce7eb 100644 --- a/sentry-spring/build.gradle.kts +++ b/sentry-spring/build.gradle.kts @@ -5,7 +5,7 @@ import org.springframework.boot.gradle.plugin.SpringBootPlugin plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-system-test-support/build.gradle.kts b/sentry-system-test-support/build.gradle.kts index 873475ac9a..1a132c5a2c 100644 --- a/sentry-system-test-support/build.gradle.kts +++ b/sentry-system-test-support/build.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry-test-support/build.gradle.kts b/sentry-test-support/build.gradle.kts index 5460f191b3..8a92b35dc9 100644 --- a/sentry-test-support/build.gradle.kts +++ b/sentry-test-support/build.gradle.kts @@ -1,6 +1,6 @@ plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone) diff --git a/sentry/build.gradle.kts b/sentry/build.gradle.kts index 797b56083b..86d5e8071f 100644 --- a/sentry/build.gradle.kts +++ b/sentry/build.gradle.kts @@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { `java-library` - id("sentry.javadoc") + id("io.sentry.javadoc") kotlin("jvm") jacoco alias(libs.plugins.errorprone)