Skip to content

Commit a151608

Browse files
authored
Merge 3414ddc into 604f1f4
2 parents 604f1f4 + 3414ddc commit a151608

File tree

42 files changed

+140
-571
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+140
-571
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
### Fixes
6+
- Republish Javadoc [#4457](https://github.com/getsentry/sentry-java/pull/4457)
7+
38
## 8.13.2
49

510
### Fixes

build-logic/build.gradle.kts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
plugins {
2+
`kotlin-dsl`
3+
}
4+
5+
repositories {
6+
gradlePluginPortal()
7+
}

build-logic/settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rootProject.name = "build-logic"
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package io.sentry.gradle
2+
3+
import org.gradle.api.DefaultTask
4+
import org.gradle.api.file.DirectoryProperty
5+
import org.gradle.api.file.FileCollection
6+
import org.gradle.api.file.FileSystemOperations
7+
import org.gradle.api.provider.Property
8+
import org.gradle.api.tasks.InputFiles
9+
import org.gradle.api.tasks.Internal
10+
import org.gradle.api.tasks.OutputDirectory
11+
import org.gradle.api.tasks.TaskAction
12+
import javax.inject.Inject
13+
14+
abstract class AggregateJavadoc @Inject constructor(
15+
@get:Internal val fs: FileSystemOperations
16+
) : DefaultTask() {
17+
@get:InputFiles
18+
abstract val javadocFiles: Property<FileCollection>
19+
20+
@get:OutputDirectory
21+
abstract val outputDir: DirectoryProperty
22+
23+
@TaskAction
24+
fun aggregate() {
25+
javadocFiles.get().forEach { file ->
26+
fs.copy {
27+
// Get the third to last part (project name) to use as the directory name for the output
28+
val parts = file.path.split('/')
29+
val projectName = parts[parts.size - 4]
30+
from(file)
31+
// Use the project name as the output directory name so that each javadoc goes into its own directory
32+
into(outputDir.get().file(projectName))
33+
}
34+
}
35+
}
36+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import io.sentry.gradle.AggregateJavadoc
2+
import org.gradle.api.attributes.Category
3+
import org.gradle.api.attributes.LibraryElements
4+
import org.gradle.kotlin.dsl.creating
5+
import org.gradle.kotlin.dsl.getValue
6+
import org.gradle.kotlin.dsl.named
7+
8+
val javadocConsumer by configurations.creating {
9+
isCanBeConsumed = false
10+
isCanBeResolved = true
11+
attributes {
12+
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
13+
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named("javadoc"))
14+
}
15+
}
16+
17+
subprojects {
18+
javadocConsumer.dependencies.add(dependencies.create(this))
19+
}
20+
21+
val javadocCollection = javadocConsumer.incoming.artifactView { lenient(true) }.files
22+
23+
tasks.register("aggregateJavadoc", AggregateJavadoc::class) {
24+
group = "documentation"
25+
description = "Aggregates Javadocs from all subprojects into a single directory."
26+
javadocFiles.set(javadocCollection)
27+
outputDir.set(layout.buildDirectory.dir("docs/javadoc"))
28+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
val javadocConfig: Configuration by configurations.creating {
2+
isCanBeResolved = false
3+
isCanBeConsumed = true
4+
5+
attributes {
6+
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
7+
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named("javadoc"))
8+
}
9+
}
10+
11+
tasks.withType<Javadoc>().configureEach {
12+
setDestinationDir(project.layout.buildDirectory.file("docs/javadoc").get().asFile)
13+
title = "${project.name} $version API"
14+
val opts = options as StandardJavadocDocletOptions
15+
opts.quiet()
16+
opts.encoding = "UTF-8"
17+
opts.memberLevel = JavadocMemberLevel.PROTECTED
18+
opts.links = listOf(
19+
"https://docs.oracle.com/javase/8/docs/api/",
20+
"https://docs.spring.io/spring-framework/docs/current/javadoc-api/",
21+
"https://docs.spring.io/spring-boot/docs/current/api/"
22+
)
23+
}
24+
25+
artifacts {
26+
add(javadocConfig.name, tasks.named("javadoc"))
27+
}

build.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ plugins {
2727
alias(libs.plugins.errorprone) apply false
2828
alias(libs.plugins.gradle.versions) apply false
2929
alias(libs.plugins.spring.dependency.management) apply false
30+
id("sentry.javadoc.aggregate")
3031
}
3132

3233
buildscript {
@@ -237,7 +238,7 @@ spotless {
237238
kotlin {
238239
target("**/*.kt")
239240
ktlint()
240-
targetExclude("**/sentry-native/**")
241+
targetExclude("**/sentry-native/**", "**/build/**")
241242
}
242243
kotlinGradle {
243244
target("**/*.kts")

0 commit comments

Comments
 (0)