Skip to content

Commit 7ff199d

Browse files
committed
Update Gradle setup to use Crankcase
1 parent f378510 commit 7ff199d

23 files changed

Lines changed: 148 additions & 257 deletions

.github/workflows/gradle.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,30 @@ jobs:
1111
os: [ubuntu-latest, windows-latest]
1212

1313
steps:
14-
- uses: actions/checkout@v4
14+
- uses: actions/checkout@v6
1515

1616
- name: Set up JDK
17-
uses: actions/setup-java@v4
17+
uses: actions/setup-java@v5
1818
with:
19-
java-version: 21
19+
java-version: 25
2020
distribution: 'temurin'
2121

2222
- name: Setup Gradle
23-
uses: gradle/actions/setup-gradle@v3
23+
uses: gradle/actions/setup-gradle@v5
2424
with:
2525
cache-read-only: ${{ !(github.ref == 'refs/heads/master' || github.ref == 'refs/heads/five') }}
2626

2727
- name: Execute Gradle build
2828
run: ./gradlew build -s
2929

30-
- uses: actions/upload-artifact@v4
30+
- uses: actions/upload-artifact@v6
3131
name: Archive Reports
3232
if: always()
3333
with:
3434
name: reports for ${{ matrix.os }}
3535
path: '**/build/reports/**'
3636

37-
- uses: actions/upload-artifact@v4
37+
- uses: actions/upload-artifact@v6
3838
name: Archive Logs
3939
if: always()
4040
with:

build-logic/build.gradle.kts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,24 @@ plugins {
33
}
44

55
repositories {
6-
gradlePluginPortal()
76
maven {
8-
name = "EngineHub Repository"
9-
url = uri("https://maven.enginehub.org/repo/")
7+
name = "EngineHub"
8+
url = uri("https://repo.enginehub.org/libs-release/")
109
}
10+
mavenCentral()
11+
gradlePluginPortal()
1112
}
1213

1314
dependencies {
1415
implementation(gradleApi())
16+
implementation(libs.crankcase.java)
17+
implementation(libs.crankcase.javaLibrary)
18+
implementation(libs.crankcase.common)
19+
implementation(libs.crankcase.licensing)
20+
implementation(libs.crankcase.git)
21+
implementation(libs.crankcase.publishing)
1522
implementation(libs.levelHeadered)
1623
implementation(libs.shadow)
17-
implementation(libs.jfrog.buildinfo)
18-
implementation(libs.errorprone.gradle.plugin)
1924
implementation(libs.gson)
2025

2126
constraints {

build-logic/settings.gradle.kts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,36 @@
1+
pluginManagement {
2+
// pluginManagement repositories resolve plugins before the repo-reconfiguration plugin can
3+
// apply, so they must point at EngineHub mirrors directly rather than upstream URLs.
4+
repositories {
5+
maven {
6+
name = "EngineHub"
7+
url = uri("https://repo.enginehub.org/libs-release/")
8+
mavenContent {
9+
releasesOnly()
10+
includeGroupAndSubgroups("com.sk89q")
11+
includeGroupAndSubgroups("org.enginehub")
12+
}
13+
}
14+
maven {
15+
name = "EngineHub Maven Central Mirror"
16+
url = uri("https://repo.enginehub.org/internal/maven-central-proxy/")
17+
mavenContent {
18+
releasesOnly()
19+
}
20+
}
21+
maven {
22+
name = "EngineHub Gradle Plugin Portal Mirror"
23+
url = uri("https://repo.enginehub.org/internal/plugin-portal-proxy/")
24+
mavenContent {
25+
releasesOnly()
26+
}
27+
}
28+
}
29+
}
30+
plugins {
31+
id("org.enginehub.crankcase.repo-reconfiguration") version "0.1.2"
32+
}
33+
134
dependencyResolutionManagement {
235
versionCatalogs {
336
create("libs") {

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

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

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

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import buildlogic.getLibrary
2+
import buildlogic.stringyLibs
3+
4+
plugins {
5+
id("org.enginehub.crankcase.java-library")
6+
id("buildlogic.common-java")
7+
}
8+
9+
dependencies {
10+
"compileOnlyApi"(stringyLibs.getLibrary("errorprone-annotations"))
11+
}

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

Lines changed: 12 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,25 @@
11
import buildlogic.stringyLibs
22
import buildlogic.getLibrary
3-
import net.ltgt.gradle.errorprone.errorprone
43

54
plugins {
65
id("eclipse")
76
id("idea")
87
id("checkstyle")
9-
id("net.ltgt.errorprone")
8+
id("org.enginehub.crankcase.java")
109
id("buildlogic.common")
1110
}
1211

13-
tasks
14-
.withType<JavaCompile>()
15-
.matching { it.name == "compileJava" || it.name == "compileTestJava" }
16-
.configureEach {
17-
val disabledLint = listOf(
18-
"processing", "path", "fallthrough", "serial", "overloads", "this-escape",
19-
)
20-
options.release.set(21)
21-
options.compilerArgs.addAll(listOf("-Xlint:all") + disabledLint.map { "-Xlint:-$it" })
22-
options.isDeprecation = true
23-
options.encoding = "UTF-8"
24-
options.compilerArgs.add("-parameters")
25-
if (project.name.contains("-core")) {
26-
options.compilerArgs.add("-Werror")
27-
}
28-
options.errorprone {
29-
// We use -Werror, so we don't need errorprone to fail the build separately
30-
allErrorsAsWarnings = true
31-
// Obviously we don't need to fix generated code
32-
disableWarningsInGeneratedCode = true
33-
// We use reference equality intentionally in several places
34-
// Perhaps we should consider testing the performance impact of using .equals() instead?
35-
// Especially for the types that are only compared by reference equality, we could consider
36-
// removing their .equals() implementations to avoid confusion.
37-
disable("ReferenceEquality")
38-
// We're on JDK 21, so System.console() can still be null
39-
disable("SystemConsoleNull")
40-
}
41-
}
12+
crankcaseJava {
13+
javaRelease = 21
14+
disabledLints = listOf("processing", "path", "fallthrough", "serial", "overloads", "this-escape")
15+
disabledErrorprone = listOf(
16+
// We use reference equality intentionally in several places
17+
"ReferenceEquality",
18+
// We're on JDK 21, so System.console() can still be null
19+
"SystemConsoleNull",
20+
)
21+
failOnWarnings = project.name.contains("-core")
22+
}
4223

4324
configure<CheckstyleExtension> {
4425
configFile = rootProject.file("config/checkstyle/checkstyle.xml")
@@ -53,38 +34,9 @@ tasks.withType<Test>().configureEach {
5334

5435
dependencies {
5536
"compileOnly"(stringyLibs.getLibrary("jspecify"))
56-
"compileOnly"(stringyLibs.getLibrary("errorprone-annotations"))
57-
"errorprone"(stringyLibs.getLibrary("errorprone-core"))
58-
"testImplementation"(platform(stringyLibs.getLibrary("junit-bom")))
59-
"testImplementation"(stringyLibs.getLibrary("junit-jupiter-api"))
60-
"testImplementation"(stringyLibs.getLibrary("junit-jupiter-params"))
6137
"testImplementation"(platform(stringyLibs.getLibrary("mockito-bom")))
6238
"testImplementation"(stringyLibs.getLibrary("mockito-core"))
6339
"testImplementation"(stringyLibs.getLibrary("mockito-junit-jupiter"))
64-
"testRuntimeOnly"(stringyLibs.getLibrary("junit-jupiter-engine"))
65-
"testRuntimeOnly"(stringyLibs.getLibrary("junit-platform-launcher"))
66-
}
67-
68-
// Java 8 turns on doclint which we fail
69-
tasks.withType<Javadoc>().configureEach {
70-
options.encoding = "UTF-8"
71-
(options as StandardJavadocDocletOptions).apply {
72-
if (project.name.contains("-core")) {
73-
addBooleanOption("Werror", true)
74-
}
75-
addBooleanOption("Xdoclint:all", true)
76-
addBooleanOption("Xdoclint:-missing", true)
77-
tags(
78-
"apiNote:a:API Note:",
79-
"implSpec:a:Implementation Requirements:",
80-
"implNote:a:Implementation Note:"
81-
)
82-
}
83-
}
84-
85-
configure<JavaPluginExtension> {
86-
withJavadocJar()
87-
withSourcesJar()
8840
}
8941

9042
tasks.named("check").configure {
Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import buildlogic.getLibrary
22
import buildlogic.stringyLibs
3-
import org.gradle.plugins.ide.idea.model.IdeaModel
43

54
plugins {
6-
id("net.octyl.level-headered")
5+
id("org.enginehub.crankcase.common")
6+
id("org.enginehub.crankcase.licensing")
7+
id("org.enginehub.crankcase.git")
78
}
89

910
group = rootProject.group
@@ -13,19 +14,7 @@ repositories {
1314
mavenCentral()
1415
maven {
1516
name = "EngineHub"
16-
url = uri("https://maven.enginehub.org/repo/")
17-
}
18-
}
19-
20-
configurations.all {
21-
resolutionStrategy {
22-
cacheChangingModulesFor(1, TimeUnit.DAYS)
23-
}
24-
}
25-
26-
plugins.withId("java") {
27-
the<JavaPluginExtension>().toolchain {
28-
languageVersion.set(JavaLanguageVersion.of(21))
17+
url = uri("https://repo.enginehub.org/repo/")
2918
}
3019
}
3120

@@ -54,20 +43,9 @@ dependencies {
5443
}
5544

5645
levelHeadered {
57-
headerTemplate(rootProject.file("HEADER.txt"))
58-
5946
sourceMatchPatterns {
6047
// Exclude overrides for shaded libs
6148
exclude("org/enginehub/craftbook/util/jinglenote/")
6249
exclude("org/enginehub/craftbook/util/profile/")
6350
}
6451
}
65-
66-
plugins.withId("idea") {
67-
configure<IdeaModel> {
68-
module {
69-
isDownloadSources = true
70-
isDownloadJavadoc = true
71-
}
72-
}
73-
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
plugins {
2-
id("java")
32
id("maven-publish")
4-
id("buildlogic.common-java")
5-
id("buildlogic.artifactory-sub")
3+
id("buildlogic.common-java-library")
4+
id("org.enginehub.crankcase.publishing")
65
}
76

87
publishing {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ plugins {
22
id("java-base")
33
id("maven-publish")
44
id("com.gradleup.shadow")
5-
id("com.jfrog.artifactory")
65
id("buildlogic.common")
7-
id("buildlogic.artifactory-sub")
6+
id("org.enginehub.crankcase.publishing")
87
}
98

109
// A horrible hack because `softwareComponentFactory` has to be gotten via plugin

0 commit comments

Comments
 (0)