Skip to content

Commit 3cfe07f

Browse files
authored
Deprecate DGPv1 types (#4135)
* Deprecate DGPv1 types Deprecate all DGPv1 mode public APIs. This will help users migrating to v2 DGPv2 to clean up leftover DGPv1 code. Added `@Suppress("DEPRECATION")` to internal usages of the deprecated types to avoid noisy warnings. I made the suppressions as targeted as possible, to avoid accidental suppression from Gradle types. #4098 * fix kotlinx serialization test * rm unused copyChildOutputDirectories function
1 parent 4987594 commit 3cfe07f

40 files changed

+243
-126
lines changed

dokka-integration-tests/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ Here's how to update an external project:
4646
git diff > $pathToProjectInDokka/project.diff
4747
```
4848

49+
Or, on macOS, copied to the clipboard:
50+
```shell
51+
git diff | pbcopy
52+
```
53+
4954
4. Check that the corresponding `GradleIntegrationTest` passes locally and push
5055

5156
### Example projects

dokka-integration-tests/gradle/projects/serialization/serialization.diff

Lines changed: 60 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
diff --git a/build.gradle.kts b/build.gradle.kts
2-
index f2cfd853..028c590d 100644
2+
index f2cfd853..b74e188a 100644
33
--- a/build.gradle.kts
44
+++ b/build.gradle.kts
55
@@ -21,13 +21,13 @@ plugins {
@@ -26,7 +26,13 @@ index f2cfd853..028c590d 100644
2626
mavenCentral()
2727
maven("https://cache-redirector.jetbrains.com/maven.pkg.jetbrains.space/kotlin/p/kotlin/dev")
2828
}
29-
@@ -143,7 +144,20 @@ tasks.withType<DokkaMultiModuleTask>().named("dokkaHtmlMultiModule") {
29+
@@ -138,12 +139,25 @@ tasks.register("dokka") {
30+
dependsOn("dokkaHtmlMultiModule")
31+
}
32+
33+
-tasks.withType<DokkaMultiModuleTask>().named("dokkaHtmlMultiModule") {
34+
+tasks.withType<@Suppress("DEPRECATION") DokkaMultiModuleTask>().named("dokkaHtmlMultiModule") {
35+
pluginsMapConfiguration.put("org.jetbrains.dokka.base.DokkaBase", """{ "templatesDir": "${projectDir.toString().replace("\\", "/")}/dokka-templates" }""")
3036
}
3137

3238
dependencies {
@@ -77,7 +83,7 @@ index 529b81c1..218558c2 100644
7783

7884
kotlin {
7985
diff --git a/buildSrc/settings.gradle.kts b/buildSrc/settings.gradle.kts
80-
index b450fd5e..9f189439 100644
86+
index b450fd5e..927b34b9 100644
8187
--- a/buildSrc/settings.gradle.kts
8288
+++ b/buildSrc/settings.gradle.kts
8389
@@ -14,6 +14,7 @@ dependencyResolutionManagement {
@@ -88,11 +94,27 @@ index b450fd5e..9f189439 100644
8894
}
8995
}
9096
}
97+
@@ -48,4 +49,4 @@ fun overriddenKotlinVersion(): String? {
98+
return trainVersion ?: trainVersionFile ?: throw IllegalArgumentException("\"kotlin_snapshot_version\" should be defined when building with snapshot compiler")
99+
}
100+
return null
101+
-}
102+
\ No newline at end of file
103+
+}
91104
diff --git a/buildSrc/src/main/kotlin/dokka-conventions.gradle.kts b/buildSrc/src/main/kotlin/dokka-conventions.gradle.kts
92-
index d3013727..0c443aa4 100644
105+
index d3013727..b58ad96a 100644
93106
--- a/buildSrc/src/main/kotlin/dokka-conventions.gradle.kts
94107
+++ b/buildSrc/src/main/kotlin/dokka-conventions.gradle.kts
95-
@@ -15,7 +15,12 @@ plugins {
108+
@@ -2,6 +2,8 @@
109+
* Copyright 2017-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
110+
*/
111+
112+
+@file:Suppress("DEPRECATION")
113+
+
114+
import org.jetbrains.dokka.gradle.*
115+
import java.net.URI
116+
117+
@@ -15,7 +17,12 @@ plugins {
96118

97119
val extens = extensions
98120
dependencies {
@@ -106,6 +128,39 @@ index d3013727..0c443aa4 100644
106128
}
107129

108130
tasks.withType<DokkaTaskPartial>().named("dokkaHtmlPartial") {
131+
@@ -76,4 +83,4 @@ tasks.withType<DokkaTaskPartial>().named("dokkaHtmlPartial") {
132+
}
133+
}
134+
}
135+
-}
136+
\ No newline at end of file
137+
+}
138+
diff --git a/formats/json-io/build.gradle.kts b/formats/json-io/build.gradle.kts
139+
index 2effe4f2..0adb4f1e 100644
140+
--- a/formats/json-io/build.gradle.kts
141+
+++ b/formats/json-io/build.gradle.kts
142+
@@ -33,7 +33,7 @@ kotlin {
143+
144+
project.configureJava9ModuleInfo()
145+
146+
-tasks.named<DokkaTaskPartial>("dokkaHtmlPartial") {
147+
+tasks.named<@Suppress("DEPRECATION") DokkaTaskPartial>("dokkaHtmlPartial") {
148+
dokkaSourceSets {
149+
configureEach {
150+
externalDocumentationLink {
151+
diff --git a/formats/json-okio/build.gradle.kts b/formats/json-okio/build.gradle.kts
152+
index 93513985..42b93ac2 100644
153+
--- a/formats/json-okio/build.gradle.kts
154+
+++ b/formats/json-okio/build.gradle.kts
155+
@@ -34,7 +34,7 @@ kotlin {
156+
157+
project.configureJava9ModuleInfo()
158+
159+
-tasks.named<DokkaTaskPartial>("dokkaHtmlPartial") {
160+
+tasks.named<@Suppress("DEPRECATION") DokkaTaskPartial>("dokkaHtmlPartial") {
161+
dokkaSourceSets {
162+
configureEach {
163+
externalDocumentationLink {
109164
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
110165
index 132a67b6..b851a68c 100644
111166
--- a/gradle/libs.versions.toml

dokka-runners/dokka-gradle-plugin/src/classicMain/kotlin/DokkaClassicPlugin.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ import org.gradle.kotlin.dsl.register
1111
import org.gradle.kotlin.dsl.withType
1212
import org.gradle.util.GradleVersion
1313
import org.jetbrains.dokka.DokkaDefaults
14+
import org.jetbrains.dokka.gradle.DOKKA_V1_DEPRECATION_MESSAGE
1415

1516
/**
1617
* The OG Dokka Gradle Plugin. A.K.A. DGP Classic, or Dokka V1.
1718
*
1819
* This plugin is planned for removal, see https://youtrack.jetbrains.com/issue/KT-71027/Remove-Dokka-Gradle-Plugin-v1
1920
*/
21+
@Deprecated(DOKKA_V1_DEPRECATION_MESSAGE)
2022
open class DokkaClassicPlugin : Plugin<Project> {
2123
override fun apply(project: Project) {
2224
if (GradleVersion.version(project.gradle.gradleVersion) < GradleVersion.version("5.6")) {
@@ -63,19 +65,19 @@ open class DokkaClassicPlugin : Plugin<Project> {
6365
name: String,
6466
multiModuleTaskSupported: Boolean = true,
6567
allModulesPageAndTemplateProcessing: Dependency = project.dokkaArtifacts.allModulesPage,
66-
configuration: AbstractDokkaTask.() -> Unit = {}
68+
configuration: @Suppress("DEPRECATION") AbstractDokkaTask.() -> Unit = {}
6769
) {
6870
project.maybeCreateDokkaPluginConfiguration(name)
6971
project.maybeCreateDokkaRuntimeConfiguration(name)
70-
project.tasks.register<DokkaTask>(name) {
72+
project.tasks.register<@Suppress("DEPRECATION") DokkaTask>(name) {
7173
configuration()
7274
}
7375

7476
if (project.parent != null) {
7577
val partialName = "${name}Partial"
7678
project.maybeCreateDokkaPluginConfiguration(partialName)
7779
project.maybeCreateDokkaRuntimeConfiguration(partialName)
78-
project.tasks.register<DokkaTaskPartial>(partialName) {
80+
project.tasks.register<@Suppress("DEPRECATION") DokkaTaskPartial>(partialName) {
7981
configuration()
8082
}
8183
}
@@ -86,7 +88,7 @@ open class DokkaClassicPlugin : Plugin<Project> {
8688
project.maybeCreateDokkaPluginConfiguration(multiModuleName, setOf(allModulesPageAndTemplateProcessing))
8789
project.maybeCreateDokkaRuntimeConfiguration(multiModuleName)
8890

89-
project.tasks.register<DokkaMultiModuleTask>(multiModuleName) {
91+
project.tasks.register<@Suppress("DEPRECATION") DokkaMultiModuleTask>(multiModuleName) {
9092
@Suppress("DEPRECATION")
9193
addSubprojectChildTasks("${name}Partial")
9294
configuration()
@@ -103,7 +105,7 @@ open class DokkaClassicPlugin : Plugin<Project> {
103105
}
104106
}
105107

106-
project.tasks.register<DokkaCollectorTask>("${name}Collector") {
108+
project.tasks.register<@Suppress("DEPRECATION") DokkaCollectorTask>("${name}Collector") {
107109
@Suppress("DEPRECATION")
108110
addSubprojectChildTasks(name)
109111
description =
@@ -113,7 +115,7 @@ open class DokkaClassicPlugin : Plugin<Project> {
113115
}
114116

115117
private fun Project.configureEachAbstractDokkaTask() {
116-
tasks.withType<AbstractDokkaTask>().configureEach task@{
118+
tasks.withType<@Suppress("DEPRECATION") AbstractDokkaTask>().configureEach task@{
117119
val formatClassifier = name.removePrefix("dokka").decapitalize()
118120
outputDirectory.convention(project.layout.buildDirectory.dir("dokka/$formatClassifier"))
119121
cacheRoot.convention(project.layout.dir(providers.provider { DokkaDefaults.cacheRoot }))
@@ -124,7 +126,7 @@ open class DokkaClassicPlugin : Plugin<Project> {
124126
}
125127

126128
private fun Project.configureEachDokkaMultiModuleTask() {
127-
tasks.withType<DokkaMultiModuleTask>().configureEach {
129+
tasks.withType<@Suppress("DEPRECATION") DokkaMultiModuleTask>().configureEach {
128130
sourceChildOutputDirectories.from({ childDokkaTasks.map { it.outputDirectory } })
129131
}
130132
}

dokka-runners/dokka-gradle-plugin/src/classicMain/kotlin/DokkaMultiModuleFileLayout.kt

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@ package org.jetbrains.dokka.gradle
77
import org.gradle.api.file.Directory
88
import org.gradle.api.provider.Provider
99
import org.jetbrains.dokka.DokkaException
10-
import org.jetbrains.dokka.gradle.DokkaMultiModuleFileLayout.CompactInParent
11-
import org.jetbrains.dokka.gradle.DokkaMultiModuleFileLayout.NoCopy
1210
import java.io.File
1311

1412
/**
1513
* @see DokkaMultiModuleFileLayout.targetChildOutputDirectory
16-
* @see NoCopy
17-
* @see CompactInParent
14+
* @see org.jetbrains.dokka.gradle.DokkaMultiModuleFileLayout.NoCopy
15+
* @see org.jetbrains.dokka.gradle.DokkaMultiModuleFileLayout.CompactInParent
1816
*/
17+
@Deprecated(DOKKA_V1_DEPRECATION_MESSAGE)
1918
fun interface DokkaMultiModuleFileLayout {
2019

2120
/**
@@ -24,15 +23,19 @@ fun interface DokkaMultiModuleFileLayout {
2423
* @return The target output directory of the [child] dokka task referenced by [parent]. This should
2524
* be unique for all registered child tasks.
2625
*/
27-
fun targetChildOutputDirectory(parent: DokkaMultiModuleTask, child: AbstractDokkaTask): Provider<Directory>
26+
fun targetChildOutputDirectory(
27+
parent: @Suppress("DEPRECATION") DokkaMultiModuleTask,
28+
child: @Suppress("DEPRECATION") AbstractDokkaTask
29+
): Provider<Directory>
2830

2931
/**
3032
* Will link to the original [AbstractDokkaTask.outputDirectory]. This requires no copying of the output files.
3133
*/
32-
object NoCopy : DokkaMultiModuleFileLayout {
34+
@Deprecated(DOKKA_V1_DEPRECATION_MESSAGE)
35+
object NoCopy : @Suppress("DEPRECATION") DokkaMultiModuleFileLayout {
3336
override fun targetChildOutputDirectory(
34-
parent: DokkaMultiModuleTask,
35-
child: AbstractDokkaTask
37+
parent: @Suppress("DEPRECATION") DokkaMultiModuleTask,
38+
child: @Suppress("DEPRECATION") AbstractDokkaTask
3639
): Provider<Directory> = child.outputDirectory
3740
}
3841

@@ -43,10 +46,11 @@ fun interface DokkaMultiModuleFileLayout {
4346
* :parentProject:firstAncestor:secondAncestor will be be resolved to
4447
* {parent output directory}/firstAncestor/secondAncestor
4548
*/
46-
object CompactInParent : DokkaMultiModuleFileLayout {
49+
@Deprecated(DOKKA_V1_DEPRECATION_MESSAGE)
50+
object CompactInParent : @Suppress("DEPRECATION") DokkaMultiModuleFileLayout {
4751
override fun targetChildOutputDirectory(
48-
parent: DokkaMultiModuleTask,
49-
child: AbstractDokkaTask
52+
parent: @Suppress("DEPRECATION") DokkaMultiModuleTask,
53+
child: @Suppress("DEPRECATION") AbstractDokkaTask
5054
): Provider<Directory> {
5155
val relativeProjectPath = parent.project.relativeProjectPath(child.project.path)
5256
val relativeFilePath = relativeProjectPath.replace(":", File.separator)
@@ -56,18 +60,12 @@ fun interface DokkaMultiModuleFileLayout {
5660
}
5761
}
5862

59-
internal fun DokkaMultiModuleTask.targetChildOutputDirectory(
60-
child: AbstractDokkaTask
63+
internal fun @Suppress("DEPRECATION") DokkaMultiModuleTask.targetChildOutputDirectory(
64+
child: @Suppress("DEPRECATION") AbstractDokkaTask
6165
): Provider<Directory> = fileLayout.get().targetChildOutputDirectory(this, child)
6266

6367

64-
internal fun DokkaMultiModuleTask.copyChildOutputDirectories() {
65-
childDokkaTasks.forEach { child ->
66-
this.copyChildOutputDirectory(child)
67-
}
68-
}
69-
70-
internal fun DokkaMultiModuleTask.copyChildOutputDirectory(child: AbstractDokkaTask) {
68+
internal fun @Suppress("DEPRECATION") DokkaMultiModuleTask.copyChildOutputDirectory(child: @Suppress("DEPRECATION") AbstractDokkaTask) {
7169
val targetChildOutputDirectory = project.file(fileLayout.get().targetChildOutputDirectory(this, child))
7270
val sourceChildOutputDirectory = child.outputDirectory.asFile.get()
7371

dokka-runners/dokka-gradle-plugin/src/classicMain/kotlin/DokkaSourceSetMapper.kt

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,33 @@ import org.jetbrains.dokka.*
88
import org.jetbrains.dokka.DokkaConfiguration.ExternalDocumentationLink
99
import java.io.File
1010

11-
internal fun GradleDokkaSourceSetBuilder.toDokkaSourceSetImpl(): DokkaSourceSetImpl = DokkaSourceSetImpl(
12-
classpath = classpath.toList(),
13-
displayName = displayNameOrDefault(),
14-
sourceSetID = sourceSetID,
15-
sourceRoots = sourceRoots.toSet(),
16-
dependentSourceSets = dependentSourceSets.get().toSet(),
17-
samples = samples.toSet(),
18-
includes = includes.toSet(),
19-
includeNonPublic = includeNonPublic.get(),
20-
documentedVisibilities = documentedVisibilities.get(),
21-
reportUndocumented = reportUndocumented.get(),
22-
skipEmptyPackages = skipEmptyPackages.get(),
23-
skipDeprecated = skipDeprecated.get(),
24-
jdkVersion = jdkVersion.get(),
25-
sourceLinks = sourceLinks.get().build().toSet(),
26-
perPackageOptions = perPackageOptions.get().build(),
27-
externalDocumentationLinks = externalDocumentationLinksWithDefaults(),
28-
languageVersion = languageVersion.orNull,
29-
apiVersion = apiVersion.orNull,
30-
noStdlibLink = noStdlibLink.get(),
31-
noJdkLink = noJdkLink.get(),
32-
suppressedFiles = suppressedFilesWithDefaults(),
33-
analysisPlatform = platform.get()
34-
)
11+
internal fun @Suppress("DEPRECATION") GradleDokkaSourceSetBuilder.toDokkaSourceSetImpl(): DokkaSourceSetImpl =
12+
DokkaSourceSetImpl(
13+
classpath = classpath.toList(),
14+
displayName = displayNameOrDefault(),
15+
sourceSetID = sourceSetID,
16+
sourceRoots = sourceRoots.toSet(),
17+
dependentSourceSets = dependentSourceSets.get().toSet(),
18+
samples = samples.toSet(),
19+
includes = includes.toSet(),
20+
includeNonPublic = includeNonPublic.get(),
21+
documentedVisibilities = documentedVisibilities.get(),
22+
reportUndocumented = reportUndocumented.get(),
23+
skipEmptyPackages = skipEmptyPackages.get(),
24+
skipDeprecated = skipDeprecated.get(),
25+
jdkVersion = jdkVersion.get(),
26+
sourceLinks = sourceLinks.get().build().toSet(),
27+
perPackageOptions = perPackageOptions.get().build(),
28+
externalDocumentationLinks = externalDocumentationLinksWithDefaults(),
29+
languageVersion = languageVersion.orNull,
30+
apiVersion = apiVersion.orNull,
31+
noStdlibLink = noStdlibLink.get(),
32+
noJdkLink = noJdkLink.get(),
33+
suppressedFiles = suppressedFilesWithDefaults(),
34+
analysisPlatform = platform.get()
35+
)
3536

36-
private fun GradleDokkaSourceSetBuilder.displayNameOrDefault(): String {
37+
private fun @Suppress("DEPRECATION") GradleDokkaSourceSetBuilder.displayNameOrDefault(): String {
3738
displayName.orNull?.let { return it }
3839
if (name.endsWith("Main") && name != "Main") {
3940
return name.removeSuffix("Main")
@@ -42,7 +43,7 @@ private fun GradleDokkaSourceSetBuilder.displayNameOrDefault(): String {
4243
return name
4344
}
4445

45-
private fun GradleDokkaSourceSetBuilder.externalDocumentationLinksWithDefaults(): Set<ExternalDocumentationLinkImpl> {
46+
private fun @Suppress("DEPRECATION") GradleDokkaSourceSetBuilder.externalDocumentationLinksWithDefaults(): Set<ExternalDocumentationLinkImpl> {
4647
return externalDocumentationLinks.get().build()
4748
.run {
4849
if (noJdkLink.get()) this
@@ -61,7 +62,7 @@ private fun GradleDokkaSourceSetBuilder.externalDocumentationLinksWithDefaults()
6162
.toSet()
6263
}
6364

64-
private fun GradleDokkaSourceSetBuilder.suppressedFilesWithDefaults(): Set<File> {
65+
private fun @Suppress("DEPRECATION") GradleDokkaSourceSetBuilder.suppressedFilesWithDefaults(): Set<File> {
6566
val suppressedGeneratedFiles = if (suppressGeneratedFiles.get()) {
6667
val generatedRoot = project.layout.buildDirectory.dir("generated").get().asFile
6768
sourceRoots

0 commit comments

Comments
 (0)