|
1 | 1 | /*
|
2 | 2 | * Copyright 2014-2024 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
|
3 | 3 | */
|
| 4 | +import org.gradle.api.publish.plugins.PublishingPlugin.PUBLISH_TASK_GROUP |
| 5 | +import org.gradle.language.base.plugins.LifecycleBasePlugin.VERIFICATION_GROUP |
4 | 6 |
|
5 | 7 | plugins {
|
6 | 8 | id("dokkabuild.base")
|
7 | 9 | }
|
8 | 10 |
|
9 |
| -val publishedIncludedBuilds = listOf("runner-cli", "runner-gradle-plugin-classic", "runner-maven-plugin") |
10 |
| -val gradlePluginIncludedBuilds = listOf("runner-gradle-plugin-classic") |
| 11 | +//region Workarounds for running all tasks in included builds |
| 12 | +// https://github.com/gradle/gradle/issues/22335 |
| 13 | +// See build-logic/src/main/kotlin/dokkabuild.base.gradle.kts |
| 14 | +fun Task.dependsOnIncludedBuildTasks( |
| 15 | + taskName: String = name |
| 16 | +) { |
| 17 | + description = "Lifecycle task that runs '$taskName' in all included builds" |
| 18 | + dependsOn("includedBuildTasks_$taskName") |
| 19 | +} |
11 | 20 |
|
12 |
| -addDependencyOnSameTasksOfIncludedBuilds("assemble", "build", "clean", "check") |
| 21 | +val publishPlugins by tasks.registering { |
| 22 | + group = "gradle plugin" |
| 23 | + dependsOnIncludedBuildTasks() |
| 24 | +} |
13 | 25 |
|
14 |
| -registerParentGroupTasks("publishing", taskNames = listOf( |
15 |
| - "publishAllPublicationsToMavenCentralRepository", |
16 |
| - "publishAllPublicationsToProjectLocalRepository", |
17 |
| - "publishAllPublicationsToSnapshotRepository", |
18 |
| - "publishAllPublicationsToSpaceDevRepository", |
19 |
| - "publishAllPublicationsToSpaceTestRepository", |
20 |
| - "publishToMavenLocal" |
21 |
| -)) { |
22 |
| - it.name in publishedIncludedBuilds |
| 26 | +val validatePlugins by tasks.registering { |
| 27 | + group = "gradle plugin" |
| 28 | + dependsOnIncludedBuildTasks() |
23 | 29 | }
|
24 | 30 |
|
25 |
| -registerParentGroupTasks("gradle plugin", taskNames = listOf( |
26 |
| - "publishPlugins", |
27 |
| - "validatePlugins" |
28 |
| -)) { |
29 |
| - it.name in gradlePluginIncludedBuilds |
| 31 | +val apiDump by tasks.registering { |
| 32 | + group = "$VERIFICATION_GROUP bcv" |
| 33 | + dependsOnIncludedBuildTasks() |
30 | 34 | }
|
31 | 35 |
|
32 |
| -registerParentGroupTasks("bcv", taskNames = listOf( |
33 |
| - "apiDump", |
34 |
| - "apiCheck", |
35 |
| - "apiBuild" |
36 |
| -)) { |
37 |
| - it.name in publishedIncludedBuilds |
| 36 | +val apiCheck by tasks.registering { |
| 37 | + group = "$VERIFICATION_GROUP bcv" |
| 38 | + dependsOnIncludedBuildTasks() |
38 | 39 | }
|
39 | 40 |
|
40 |
| -registerParentGroupTasks("verification", taskNames = listOf( |
41 |
| - "test" |
42 |
| -)) |
| 41 | +val test by tasks.registering { |
| 42 | + group = VERIFICATION_GROUP |
| 43 | + dependsOnIncludedBuildTasks() |
| 44 | + dependsOn(apiCheck) |
| 45 | +} |
43 | 46 |
|
44 |
| -tasks.register("integrationTest") { |
45 |
| - group = "verification" |
| 47 | +val integrationTest by tasks.registering { |
| 48 | + group = VERIFICATION_GROUP |
| 49 | + dependsOnIncludedBuildTasks() |
46 | 50 | description = "Runs integration tests of this project. Might take a while and require additional setup."
|
47 |
| - |
48 |
| - dependsOn(includedBuildTasks("integrationTest") { |
49 |
| - it.name == "dokka-integration-tests" |
50 |
| - }) |
51 | 51 | }
|
52 | 52 |
|
53 |
| -fun addDependencyOnSameTasksOfIncludedBuilds(vararg taskNames: String) { |
54 |
| - taskNames.forEach { taskName -> |
55 |
| - tasks.named(taskName) { |
56 |
| - dependsOn(includedBuildTasks(taskName)) |
57 |
| - } |
58 |
| - } |
| 53 | +val publishAllPublicationsToRemoteRepositories by tasks.registering { |
| 54 | + group = PUBLISH_TASK_GROUP |
| 55 | + dependsOnIncludedBuildTasks("publishAllPublicationsToMavenCentralRepository") |
| 56 | + dependsOnIncludedBuildTasks("publishAllPublicationsToProjectLocalRepository") |
| 57 | + dependsOnIncludedBuildTasks("publishAllPublicationsToSnapshotRepository") |
| 58 | + dependsOnIncludedBuildTasks("publishAllPublicationsToSpaceDevRepository") |
59 | 59 | }
|
60 |
| - |
61 |
| -fun registerParentGroupTasks( |
62 |
| - groupName: String, |
63 |
| - taskNames: List<String>, |
64 |
| - includedBuildFilter: (IncludedBuild) -> Boolean = { true } |
65 |
| -) = taskNames.forEach { taskName -> |
66 |
| - tasks.register(taskName) { |
67 |
| - group = groupName |
68 |
| - description = "A parent task that calls tasks with the same name in all subprojects and included builds" |
69 |
| - |
70 |
| - dependsOn(subprojectTasks(taskName), includedBuildTasks(taskName, includedBuildFilter)) |
71 |
| - } |
| 60 | +val publishAllPublicationsToMavenCentralRepository by tasks.registering { |
| 61 | + group = PUBLISH_TASK_GROUP |
| 62 | + dependsOnIncludedBuildTasks() |
72 | 63 | }
|
73 |
| - |
74 |
| -fun subprojectTasks(taskName: String): List<String> = |
75 |
| - subprojects |
76 |
| - .filter { it.getTasksByName(taskName, false).isNotEmpty() } |
77 |
| - .map { ":${it.path}:$taskName" } |
78 |
| - |
79 |
| - |
80 |
| -fun includedBuildTasks(taskName: String, filter: (IncludedBuild) -> Boolean = { true }): List<TaskReference> = |
81 |
| - gradle.includedBuilds |
82 |
| - .filter { it.name != "build-logic" } |
83 |
| - .filter(filter) |
84 |
| - .mapNotNull { it.task(":$taskName") } |
| 64 | +val publishAllPublicationsToProjectLocalRepository by tasks.registering { |
| 65 | + group = PUBLISH_TASK_GROUP |
| 66 | + dependsOnIncludedBuildTasks() |
| 67 | +} |
| 68 | +val publishAllPublicationsToSnapshotRepository by tasks.registering { |
| 69 | + group = PUBLISH_TASK_GROUP |
| 70 | + dependsOnIncludedBuildTasks() |
| 71 | +} |
| 72 | +val publishAllPublicationsToSpaceDevRepository by tasks.registering { |
| 73 | + group = PUBLISH_TASK_GROUP |
| 74 | + dependsOnIncludedBuildTasks() |
| 75 | +} |
| 76 | +val publishAllPublicationsToSpaceTestRepository by tasks.registering { |
| 77 | + group = PUBLISH_TASK_GROUP |
| 78 | + dependsOnIncludedBuildTasks() |
| 79 | +} |
| 80 | +val publishToMavenLocal by tasks.registering { |
| 81 | + group = PUBLISH_TASK_GROUP |
| 82 | + dependsOnIncludedBuildTasks() |
| 83 | +} |
| 84 | +//endregion |
0 commit comments