Skip to content

Commit f3d6dad

Browse files
authored
Eliminate convention plugin (#1398)
1 parent 965efe6 commit f3d6dad

File tree

7 files changed

+75
-122
lines changed

7 files changed

+75
-122
lines changed

build-logic/build.gradle.kts

Lines changed: 0 additions & 9 deletions
This file was deleted.

build-logic/gradle.properties

Lines changed: 0 additions & 1 deletion
This file was deleted.

build-logic/settings.gradle.kts

Lines changed: 0 additions & 12 deletions
This file was deleted.

build-logic/src/main/kotlin/shadow.convention.publish.gradle.kts

Lines changed: 0 additions & 78 deletions
This file was deleted.

build.gradle.kts

Lines changed: 70 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
11
@file:Suppress("UnstableApiUsage")
22

3+
import org.gradle.api.plugins.JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME
4+
import org.gradle.api.plugins.JavaPlugin.JAVADOC_ELEMENTS_CONFIGURATION_NAME
5+
import org.gradle.api.plugins.JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME
6+
import org.gradle.api.plugins.JavaPlugin.SOURCES_ELEMENTS_CONFIGURATION_NAME
37
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
48
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
59

610
plugins {
711
alias(libs.plugins.kotlin.jvm)
812
alias(libs.plugins.android.lint)
913
alias(libs.plugins.jetbrains.bcv)
14+
alias(libs.plugins.jetbrains.dokka)
15+
alias(libs.plugins.mavenPublish)
16+
alias(libs.plugins.pluginPublish)
1017
alias(libs.plugins.spotless)
11-
id("shadow.convention.publish")
18+
}
19+
20+
version = providers.gradleProperty("VERSION_NAME").get()
21+
group = providers.gradleProperty("GROUP").get()
22+
description = providers.gradleProperty("POM_DESCRIPTION").get()
23+
24+
dokka {
25+
dokkaPublications.html {
26+
outputDirectory = rootDir.resolve("docs/api")
27+
}
1228
}
1329

1430
java {
@@ -40,15 +56,43 @@ spotless {
4056
}
4157
kotlinGradle {
4258
ktlint(libs.ktlint.get().version)
43-
target("**/*.kts")
44-
targetExclude("build-logic/build/**")
4559
}
4660
}
4761

4862
val testPluginClasspath by configurations.registering {
4963
isCanBeResolved = true
5064
}
5165

66+
configurations.configureEach {
67+
when (name) {
68+
API_ELEMENTS_CONFIGURATION_NAME,
69+
RUNTIME_ELEMENTS_CONFIGURATION_NAME,
70+
JAVADOC_ELEMENTS_CONFIGURATION_NAME,
71+
SOURCES_ELEMENTS_CONFIGURATION_NAME,
72+
-> {
73+
outgoing {
74+
// Main/current capability.
75+
capability("com.gradleup.shadow:shadow-gradle-plugin:$version")
76+
77+
// Historical capabilities.
78+
capability("io.github.goooler.shadow:shadow-gradle-plugin:$version")
79+
capability("com.github.johnrengelman:shadow:$version")
80+
capability("gradle.plugin.com.github.jengelman.gradle.plugins:shadow:$version")
81+
capability("gradle.plugin.com.github.johnrengelman:shadow:$version")
82+
capability("com.github.jengelman.gradle.plugins:shadow:$version")
83+
}
84+
}
85+
}
86+
}
87+
88+
publishing.publications.withType<MavenPublication>().configureEach {
89+
// We don't care about capabilities being unmappable to Maven.
90+
suppressPomMetadataWarningsFor(API_ELEMENTS_CONFIGURATION_NAME)
91+
suppressPomMetadataWarningsFor(RUNTIME_ELEMENTS_CONFIGURATION_NAME)
92+
suppressPomMetadataWarningsFor(JAVADOC_ELEMENTS_CONFIGURATION_NAME)
93+
suppressPomMetadataWarningsFor(SOURCES_ELEMENTS_CONFIGURATION_NAME)
94+
}
95+
5296
dependencies {
5397
compileOnly(libs.kotlin.kmp)
5498
implementation(libs.apache.ant)
@@ -61,8 +105,8 @@ dependencies {
61105
implementation(libs.plexus.xml)
62106

63107
testPluginClasspath(libs.foojayResolver)
64-
testPluginClasspath(libs.pluginPublish)
65108
testPluginClasspath(libs.kotlin.kmp)
109+
testPluginClasspath(libs.pluginPublish)
66110

67111
lintChecks(libs.androidx.gradlePluginLints)
68112
}
@@ -124,6 +168,26 @@ testing.suites {
124168
}
125169
}
126170

171+
gradlePlugin {
172+
website = providers.gradleProperty("POM_URL")
173+
vcsUrl = providers.gradleProperty("POM_URL")
174+
175+
plugins {
176+
create("shadowPlugin") {
177+
id = "com.gradleup.shadow"
178+
implementationClass = "com.github.jengelman.gradle.plugins.shadow.ShadowPlugin"
179+
displayName = providers.gradleProperty("POM_NAME").get()
180+
description = providers.gradleProperty("POM_DESCRIPTION").get()
181+
tags = listOf("onejar", "shade", "fatjar", "uberjar")
182+
}
183+
}
184+
185+
testSourceSets(
186+
sourceSets["functionalTest"],
187+
sourceSets["documentTest"],
188+
)
189+
}
190+
127191
// This part should be placed after testing.suites to ensure the test sourceSets are created.
128192
kotlin.target.compilations {
129193
val main by getting
@@ -133,13 +197,6 @@ kotlin.target.compilations {
133197
}
134198
}
135199

136-
gradlePlugin {
137-
testSourceSets(
138-
sourceSets["functionalTest"],
139-
sourceSets["documentTest"],
140-
)
141-
}
142-
143200
tasks.pluginUnderTestMetadata {
144201
// Plugins used in tests could be resolved in classpath.
145202
pluginClasspath.from(
@@ -174,13 +231,9 @@ tasks.register<Copy>("downloadStartScripts") {
174231
}
175232

176233
tasks.clean {
177-
val includedBuilds = gradle.includedBuilds
178-
dependsOn(includedBuilds.map { it.task(path) })
179-
180-
val rootDirs = includedBuilds.map { it.projectDir } + projectDir
181234
delete += listOf(
182-
rootDirs.map { it.resolve(".gradle") },
183-
rootDirs.map { it.resolve(".kotlin") },
235+
projectDir.resolve(".gradle"),
236+
projectDir.resolve(".kotlin"),
184237
dokka.dokkaPublications.html.map { it.outputDirectory },
185238
// Generated by MkDocs.
186239
rootDir.resolve("site"),

gradle/libs.versions.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[versions]
22
kotlin = "2.1.20"
33
moshi = "1.15.2"
4+
pluginPublish = "1.3.1"
45

56
[libraries]
67
apache-ant = "org.apache.ant:ant:1.10.15"
@@ -17,11 +18,9 @@ xmlunit = "org.xmlunit:xmlunit-legacy:2.10.0"
1718
moshi = { module = "com.squareup.moshi:moshi", version.ref = "moshi" }
1819
moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" }
1920

20-
pluginPublish = "com.gradle.publish:plugin-publish-plugin:1.3.1"
21-
mavenPublish = "com.vanniktech:gradle-maven-publish-plugin:0.31.0"
22-
jetbrains-dokka = "org.jetbrains.dokka:dokka-gradle-plugin:2.0.0"
2321
foojayResolver = "org.gradle.toolchains.foojay-resolver-convention:org.gradle.toolchains.foojay-resolver-convention.gradle.plugin:0.10.0"
2422
kotlin-kmp = { module = "org.jetbrains.kotlin.multiplatform:org.jetbrains.kotlin.multiplatform.gradle.plugin", version.ref = "kotlin" }
23+
pluginPublish = { module = "com.gradle.publish:plugin-publish-plugin", version.ref = "pluginPublish" }
2524

2625
androidx-gradlePluginLints = "androidx.lint:lint-gradle:1.0.0-alpha03"
2726
# Dummy to get renovate updates, the version is used in rootProject build.gradle with spotless.
@@ -34,4 +33,7 @@ assertk = "com.willowtreeapps.assertk:assertk:0.28.1"
3433
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
3534
android-lint = "com.android.lint:8.9.1"
3635
jetbrains-bcv = "org.jetbrains.kotlinx.binary-compatibility-validator:0.17.0"
36+
jetbrains-dokka = "org.jetbrains.dokka:2.0.0"
37+
mavenPublish = "com.vanniktech.maven.publish:0.31.0"
38+
pluginPublish = { id = "com.gradle.plugin-publish", version.ref = "pluginPublish" }
3739
spotless = "com.diffplug.spotless:7.0.3"

settings.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ pluginManagement {
1010
}
1111
gradlePluginPortal()
1212
}
13-
14-
includeBuild("build-logic")
1513
}
1614

1715
plugins {

0 commit comments

Comments
 (0)