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 dfa6d91cd57..6130e73aa94 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 00000000000..cc02e636bda --- /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 00000000000..7fbbd448ef1 --- /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 00000000000..fdf65524d92 --- /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 00000000000..55bcad98baa --- /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 00000000000..7eb796a02ff --- /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 d5e75d53420..c9abc426f79 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 9ce22b2627b..00000000000 --- 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 97b8c11c7c6..9328a7210fb 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 e6a9b53102a..ece3f90c2ef 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 690884e8605..5575a92074d 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 ed3f111e5d3..e0e00d53572 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 840d9d7169d..d8ebdab956a 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 03449a3a3d0..30c9eb0a64c 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 24e2fb3effb..ba7b3ef95b6 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 70573385742..1abba376fed 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 b5790100049..72a3273f8d6 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 2a581f997c8..21c543ee114 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 f6292d115cb..674e5c4a7c5 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 cfd431fc8c5..57d8ac16ed8 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 173b573c896..ceaac7c526a 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 642e2df0d45..df195ffe1d8 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 1a01652e3c3..213c1dd8f43 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 2b9659214e7..3c1bc43a24f 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 ed355c49e8c..fedf1fc495f 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 2c87a8f46fb..c5ac8040660 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 c7e7168b158..95a6e80b0e1 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 e5a1152aa6f..a77106f8616 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 efbe4bda3bf..5aa7a07192f 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 75a43837633..f45d6bc3684 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 c8332ca91ed..651f0a675f9 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 60885889f4f..68dd5deee13 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 28a1d60a659..e93808aaa96 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 6e06af30436..f5171d41ba2 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 e8f164024b6..37cda8c3e54 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 642fd71c5e6..fe81ca2855b 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 24ce47e6bb0..f285d9a84b0 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 acac9bcff2b..e0675897ca3 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 56cb6b4a367..873475ac9af 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 31a5e82646e..5460f191b33 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 e24967f7937..797b56083bc 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 7b4ead53891..7081c58fbe5 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 8391451622f..95ed0f498a0 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 00000000000..b0871c17a1a --- /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 2aa7bcfd06d..3fff2c01ff6 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 6130e73aa94..b94106289ad 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 55bcad98baa..d118c9543a8 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 fdf65524d92..f6b9ec6a0ff 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 c9abc426f79..4ca65528dc4 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 9328a7210fb..fb1f1888c93 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 ece3f90c2ef..52be4966f0a 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 5575a92074d..3478d4c212f 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 e0e00d53572..8ce2fc6db1b 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 d8ebdab956a..5c416356c3d 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 30c9eb0a64c..484d16b9691 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 ba7b3ef95b6..cbde65e12ac 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 1abba376fed..0ac41f79583 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 72a3273f8d6..5d9de33a05f 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 21c543ee114..47f57439159 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 674e5c4a7c5..033db009872 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 57d8ac16ed8..bca565baa17 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 ceaac7c526a..c975184c377 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 df195ffe1d8..860a7115bfa 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 213c1dd8f43..61cdbd0350a 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 3c1bc43a24f..32dd5cf648c 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 fedf1fc495f..5fa3fbba3c4 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 c5ac8040660..0ff3e72b6fb 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 95a6e80b0e1..8af85f92a46 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 a77106f8616..5a6c00a043f 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 5aa7a07192f..85bebbf0e87 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 f45d6bc3684..6d092e352ee 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 651f0a675f9..114a61bd25b 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 68dd5deee13..9689f062f5c 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 e93808aaa96..6479d08ac06 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 f5171d41ba2..2510ad9db9d 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 37cda8c3e54..e8167fed792 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 fe81ca2855b..2b7e9a2a8d9 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 f285d9a84b0..71867a8c8b3 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 e0675897ca3..51bd0ce7eb4 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 873475ac9af..1a132c5a2cb 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 5460f191b33..8a92b35dc96 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 797b56083bc..86d5e8071fb 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)