Skip to content

Commit 169b1a0

Browse files
committed
Update build-logic, allowing Gradle 9
1 parent f42e293 commit 169b1a0

23 files changed

Lines changed: 115 additions & 96 deletions

build-logic/build.gradle.kts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ repositories {
1212

1313
dependencies {
1414
implementation(gradleApi())
15-
implementation(libs.licenser)
16-
implementation(libs.grgit)
15+
implementation(libs.levelHeadered)
1716
implementation(libs.shadow)
1817
implementation(libs.jfrog.buildinfo)
1918
implementation(libs.paperweight)

build-logic/src/main/kotlin/buildlogic.artifactory-root.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import org.gradle.api.Project
2+
import org.gradle.kotlin.dsl.configure
3+
import org.gradle.kotlin.dsl.named
14
import org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention
25
import org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask
36

build-logic/src/main/kotlin/buildlogic.common-java.gradle.kts

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import buildlogic.getLibrary
21
import buildlogic.stringyLibs
2+
import buildlogic.getLibrary
33

44
plugins {
55
id("eclipse")
@@ -8,9 +8,6 @@ plugins {
88
id("buildlogic.common")
99
}
1010

11-
val commonJava = extensions.create<buildlogic.CommonJavaExtension>("commonJava")
12-
commonJava.banSlf4j.convention(true)
13-
1411
tasks
1512
.withType<JavaCompile>()
1613
.matching { it.name == "compileJava" || it.name == "compileTestJava" }
@@ -23,7 +20,7 @@ tasks
2320
options.isDeprecation = true
2421
options.encoding = "UTF-8"
2522
options.compilerArgs.add("-parameters")
26-
//options.compilerArgs.add("-Werror")
23+
// options.compilerArgs.add("-Werror")
2724
}
2825

2926
configure<CheckstyleExtension> {
@@ -32,7 +29,9 @@ configure<CheckstyleExtension> {
3229
}
3330

3431
tasks.withType<Test>().configureEach {
35-
useJUnitPlatform()
32+
useJUnitPlatform {
33+
includeEngines("junit-jupiter")
34+
}
3635
}
3736

3837
dependencies {
@@ -44,13 +43,14 @@ dependencies {
4443
"testImplementation"(stringyLibs.getLibrary("mockito-core"))
4544
"testImplementation"(stringyLibs.getLibrary("mockito-junit-jupiter"))
4645
"testRuntimeOnly"(stringyLibs.getLibrary("junit-jupiter-engine"))
46+
"testRuntimeOnly"(stringyLibs.getLibrary("junit-platform-launcher"))
4747
}
4848

4949
// Java 8 turns on doclint which we fail
5050
tasks.withType<Javadoc>().configureEach {
5151
options.encoding = "UTF-8"
5252
(options as StandardJavadocDocletOptions).apply {
53-
//addBooleanOption("Werror", true)
53+
// addBooleanOption("Werror", true)
5454
addBooleanOption("Xdoclint:all", true)
5555
addBooleanOption("Xdoclint:-missing", true)
5656
tags(
@@ -66,16 +66,6 @@ configure<JavaPluginExtension> {
6666
withSourcesJar()
6767
}
6868

69-
configurations["compileClasspath"].apply {
70-
resolutionStrategy.componentSelection {
71-
withModule("org.slf4j:slf4j-api") {
72-
if (commonJava.banSlf4j.get()) {
73-
reject("No SLF4J allowed on compile classpath")
74-
}
75-
}
76-
}
77-
}
78-
7969
tasks.named("check").configure {
8070
dependsOn("checkstyleMain", "checkstyleTest")
8171
}

build-logic/src/main/kotlin/buildlogic.common.gradle.kts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import buildlogic.stringyLibs
33
import org.gradle.plugins.ide.idea.model.IdeaModel
44

55
plugins {
6-
id("org.cadixdev.licenser")
6+
id("net.octyl.level-headered")
77
}
88

99
group = rootProject.group
@@ -53,10 +53,14 @@ dependencies {
5353
}
5454
}
5555

56-
license {
57-
header(rootProject.file("HEADER.txt"))
58-
include("**/*.java")
59-
include("**/*.kt")
56+
levelHeadered {
57+
headerTemplate(rootProject.file("HEADER.txt"))
58+
59+
sourceMatchPatterns {
60+
// Exclude overrides for shaded libs
61+
exclude("org/enginehub/craftbook/util/jinglenote/")
62+
exclude("org/enginehub/craftbook/util/profile/")
63+
}
6064
}
6165

6266
plugins.withId("idea") {

build-logic/src/main/kotlin/buildlogic.core-and-platform.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ plugins {
55
id("buildlogic.artifactory-sub")
66
}
77

8-
ext["internalVersion"] = "$version+${rootProject.ext["gitCommitHash"]}"
9-
108
publishing {
119
publications {
1210
register<MavenPublication>("maven") {

build-logic/src/main/kotlin/buildlogic.libs.gradle.kts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
plugins {
22
id("java-base")
33
id("maven-publish")
4-
id("com.github.johnrengelman.shadow")
4+
id("com.gradleup.shadow")
55
id("com.jfrog.artifactory")
66
id("buildlogic.common")
77
id("buildlogic.artifactory-sub")
@@ -114,7 +114,6 @@ project.apply<LibsConfigPluginHack>()
114114
val libsComponent = project.components["libs"] as AdhocComponentWithVariants
115115

116116
val apiElements = project.configurations.register("apiElements") {
117-
isVisible = false
118117
description = "API elements for libs"
119118
isCanBeResolved = false
120119
isCanBeConsumed = true
@@ -129,7 +128,6 @@ val apiElements = project.configurations.register("apiElements") {
129128
}
130129

131130
val runtimeElements = project.configurations.register("runtimeElements") {
132-
isVisible = false
133131
description = "Runtime elements for libs"
134132
isCanBeResolved = false
135133
isCanBeConsumed = true
@@ -144,7 +142,6 @@ val runtimeElements = project.configurations.register("runtimeElements") {
144142
}
145143

146144
val sourcesElements = project.configurations.register("sourcesElements") {
147-
isVisible = false
148145
description = "Source elements for libs"
149146
isCanBeResolved = false
150147
isCanBeConsumed = true
@@ -176,8 +173,3 @@ configure<PublishingExtension> {
176173
}
177174
}
178175
}
179-
180-
if (project != project(":craftbook-libs:core")) {
181-
evaluationDependsOn(":craftbook-libs:core")
182-
configurations["shade"].shouldResolveConsistentlyWith(project(":craftbook-libs:core").configurations["shade"])
183-
}

build-logic/src/main/kotlin/buildlogic.platform.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
plugins {
2-
id("com.github.johnrengelman.shadow")
2+
id("com.gradleup.shadow")
33
id("buildlogic.core-and-platform")
44
}
55

build-logic/src/main/kotlin/buildlogic/CommonJavaExtension.kt

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package buildlogic
2+
3+
import org.gradle.api.provider.Provider
4+
import org.gradle.api.provider.ProviderFactory
5+
import org.gradle.api.services.BuildService
6+
import org.gradle.api.services.BuildServiceParameters
7+
import javax.inject.Inject
8+
9+
/**
10+
* Git-related extension.
11+
*/
12+
internal abstract class GitBuildService @Inject constructor(
13+
private val providers: ProviderFactory,
14+
) : BuildService<BuildServiceParameters.None> {
15+
private val gitCommitHash by lazy {
16+
val probedCommitHash = providers.exec {
17+
commandLine("git", "rev-parse", "--short", "HEAD")
18+
}.standardOutput.asText.map { it.trim() }
19+
20+
providers.gradleProperty("gitCommitHash").orElse(probedCommitHash)
21+
}
22+
23+
fun computeInternalVersion(version: String): Provider<String> =
24+
gitCommitHash.map { hash -> "$version+$hash" }
25+
}

build-logic/src/main/kotlin/buildlogic/GradleExtras.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@ import org.gradle.api.artifacts.VersionConstraint
88
import org.gradle.api.plugins.ExtraPropertiesExtension
99
import org.gradle.api.provider.Provider
1010
import org.gradle.kotlin.dsl.getByType
11+
import org.gradle.kotlin.dsl.registerIfAbsent
1112

1213
val Project.ext: ExtraPropertiesExtension
1314
get() = extensions.getByType()
1415

1516
val Project.stringyLibs: VersionCatalog
1617
get() = extensions.getByType<VersionCatalogsExtension>().named("libs")
1718

19+
val Project.internalVersion: Provider<String>
20+
get() = gradle.sharedServices.registerIfAbsent("git", GitBuildService::class) {}
21+
.flatMap { service -> service.computeInternalVersion(project.version as String) }
22+
1823
fun VersionCatalog.getLibrary(name: String): Provider<MinimalExternalModuleDependency> = findLibrary(name).orElseThrow {
1924
error("Library $name not found in version catalog")
2025
}

0 commit comments

Comments
 (0)