Skip to content

Commit 4d40e30

Browse files
authored
update to develocity plugin (#115)
* update to develocity plugin * properly support toolchains
1 parent 8da1c9c commit 4d40e30

File tree

8 files changed

+121
-123
lines changed

8 files changed

+121
-123
lines changed

.github/workflows/gradle.yml

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,7 @@ jobs:
4949
uses: gradle/actions/setup-gradle@aff52e5be96935327d77c5529075184377dc4371 # v3
5050

5151
- name: Perform Build via Gradle
52-
run: ./gradlew build --scan
53-
54-
- name: Publish to Maven Local via Gradle
55-
run: ./gradlew publishToMavenLocal --scan
56-
57-
- name: Upload CodeCov Report
58-
uses: codecov/codecov-action@ab904c41d6ece82784817410c45d8b8c02684457 # v3
59-
with:
60-
files: "**/build/reports/jacoco/**/*.xml"
52+
run: ./gradlew build publishToMavenLocal
6153

6254
- name: Publish Plugin and Create GitHub Release via Gradle
6355
# Release job, only for pushes to the main development branch

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ mythicDropsRelease {
8484
The `dev.mythicdrops.gradle.convention.java` plugin will configure the following when applied to any project that also
8585
has the `java` plugin applied:
8686

87-
- Configures the project to compile targeting JDK 16
87+
- Configures the project to compile targeting JDK 17
8888
- Configures the project to pass the `-parameters` javac flag when compiling
8989
- Applies the [`jacoco`](https://docs.gradle.org/current/userguide/jacoco_plugin.html) Gradle plugin
9090
- Configures the `jacoco` plugin to use JaCoCo 0.8.7
@@ -100,6 +100,15 @@ plugins {
100100
}
101101
```
102102

103+
You can override the JDK version the same way you'd override it in a normal Java project:
104+
```kotlin
105+
java {
106+
toolchain {
107+
languageVersion = JavaLanguageVersion.of(21)
108+
}
109+
}
110+
```
111+
103112
### Kotlin JVM Plugin
104113

105114
The `dev.mythicdrops.gradle.conventions.kotlin.jvm` plugin will configure the following when applied to any project that

settings.gradle.kts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@ pluginManagement {
77
plugins {
88
// See https://jmfayard.github.io/refreshVersions
99
id("de.fayard.refreshVersions") version "0.60.5"
10-
id("com.gradle.enterprise") version "3.17.4"
10+
id("com.gradle.develocity") version "3.17.4"
1111
}
1212

13-
gradleEnterprise {
13+
develocity {
1414
buildScan {
15-
termsOfServiceUrl = "https://gradle.com/terms-of-service"
16-
termsOfServiceAgree = "yes"
15+
publishing.onlyIf { it.buildResult.failures.isNotEmpty() && !System.getenv("CI").isNullOrEmpty() }
16+
termsOfUseUrl = "https://gradle.com/terms-of-service"
17+
termsOfUseAgree = "yes"
1718
}
1819
}

src/main/kotlin/dev/mythicdrops/gradle/conventions/MythicDropsJavaExtension.kt

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

src/main/kotlin/dev/mythicdrops/gradle/conventions/MythicDropsJavaPlugin.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,25 @@
11
package dev.mythicdrops.gradle.conventions
22

3-
import org.gradle.api.JavaVersion
43
import org.gradle.api.Project
54
import org.gradle.api.plugins.JavaPluginExtension
65
import org.gradle.api.tasks.testing.Test
76
import org.gradle.jvm.toolchain.JavaLanguageVersion
87
import org.gradle.kotlin.dsl.configure
9-
import org.gradle.kotlin.dsl.create
108
import org.gradle.kotlin.dsl.withType
119
import org.gradle.testing.jacoco.plugins.JacocoPlugin
1210
import org.gradle.testing.jacoco.plugins.JacocoPluginExtension
1311
import org.gradle.testing.jacoco.tasks.JacocoReport
1412

15-
val DEFAULT_JAVA_VERSION = JavaVersion.VERSION_17
13+
const val DEFAULT_JAVA_VERSION = 17
1614

1715
/**
1816
* Plugin that configures Java for JDK 17 and enables JaCoCo.
1917
*/
2018
open class MythicDropsJavaPlugin : DependentPlugin("Java", "java") {
2119
override fun configureProject(target: Project) {
22-
val javaExtension =
23-
target.extensions.create<MythicDropsJavaExtension>("mythicDropsJava").apply {
24-
// default to Java 17
25-
javaVersion.convention(DEFAULT_JAVA_VERSION)
26-
}
27-
2820
target.configure<JavaPluginExtension> {
2921
toolchain {
30-
languageVersion.set(JavaLanguageVersion.of(javaExtension.javaVersion.get().majorVersion))
22+
languageVersion.convention(JavaLanguageVersion.of(DEFAULT_JAVA_VERSION))
3123
}
3224
}
3325

src/main/kotlin/dev/mythicdrops/gradle/spigot/RunSpigotBuildToolsTask.kt

Lines changed: 101 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -3,108 +3,126 @@ package dev.mythicdrops.gradle.spigot
33
import org.gradle.api.DefaultTask
44
import org.gradle.api.file.FileSystemOperations
55
import org.gradle.api.file.RegularFileProperty
6+
import org.gradle.api.plugins.JavaPluginExtension
67
import org.gradle.api.provider.Property
78
import org.gradle.api.services.ServiceReference
89
import org.gradle.api.tasks.Input
910
import org.gradle.api.tasks.InputFile
11+
import org.gradle.api.tasks.Nested
1012
import org.gradle.api.tasks.TaskAction
13+
import org.gradle.jvm.toolchain.JavaLauncher
14+
import org.gradle.jvm.toolchain.JavaToolchainService
15+
import org.gradle.kotlin.dsl.getByType
1116
import org.gradle.process.ExecOperations
1217
import java.io.File
1318
import java.nio.file.Paths
1419
import javax.inject.Inject
1520

16-
abstract class RunSpigotBuildToolsTask
17-
@Inject
18-
constructor(
19-
private val execOperations: ExecOperations,
20-
private val fileSystemOperations: FileSystemOperations,
21-
) : DefaultTask() {
22-
@get:ServiceReference(SyncTaskBuildService.NAME)
23-
abstract val syncTask: Property<SyncTaskBuildService>
21+
abstract class RunSpigotBuildToolsTask : DefaultTask() {
22+
@get:ServiceReference(SyncTaskBuildService.NAME)
23+
abstract val syncTask: Property<SyncTaskBuildService>
2424

25-
@get:InputFile
26-
abstract val buildToolsLocation: RegularFileProperty
25+
@get:InputFile
26+
abstract val buildToolsLocation: RegularFileProperty
2727

28-
@get:Input
29-
abstract val includeRemapped: Property<Boolean>
28+
@get:Input
29+
abstract val includeRemapped: Property<Boolean>
3030

31-
@get:Input
32-
abstract val version: Property<String>
31+
@get:Input
32+
abstract val version: Property<String>
3333

34-
init {
35-
description = "Runs Spigot BuildTools.jar for a specific Minecraft version"
36-
group = "spigot"
34+
@get:Nested
35+
abstract val launcher: Property<JavaLauncher>
36+
37+
@get:Inject
38+
abstract val execOperations: ExecOperations
39+
40+
@get:Inject
41+
abstract val fileSystemOperations: FileSystemOperations
42+
43+
@get:Inject
44+
abstract val javaToolchainService: JavaToolchainService
45+
46+
init {
47+
description = "Runs Spigot BuildTools.jar for a specific Minecraft version"
48+
group = "spigot"
49+
50+
val toolchain = project.extensions.getByType<JavaPluginExtension>().toolchain
51+
val defaultLauncher = javaToolchainService.launcherFor(toolchain)
52+
launcher.convention(defaultLauncher)
53+
}
54+
55+
@TaskAction
56+
fun runSpigotBuildTools() {
57+
val version = version.getOrElse("")
58+
if (version.isBlank()) {
59+
logger.lifecycle("Not running Spigot build tools as the version is blank")
60+
return
3761
}
3862

39-
@TaskAction
40-
fun runSpigotBuildTools() {
41-
val version = version.getOrElse("")
42-
if (version.isBlank()) {
43-
logger.lifecycle("Not running Spigot build tools as the version is blank")
44-
return
45-
}
46-
47-
val mavenLocalDirectory = Paths.get(project.repositories.mavenLocal().url).toFile()
48-
if (!mavenLocalDirectory.exists()) {
49-
logger.lifecycle("Creating Maven Local repository at ${mavenLocalDirectory.absolutePath}")
50-
mavenLocalDirectory.mkdirs()
51-
}
52-
53-
normalVersion(mavenLocalDirectory, version)
54-
if (includeRemapped.getOrElse(false)) {
55-
remappedVersion(mavenLocalDirectory, version)
56-
}
63+
val mavenLocalDirectory = Paths.get(project.repositories.mavenLocal().url).toFile()
64+
if (!mavenLocalDirectory.exists()) {
65+
logger.lifecycle("Creating Maven Local repository at ${mavenLocalDirectory.absolutePath}")
66+
mavenLocalDirectory.mkdirs()
5767
}
5868

59-
private fun normalVersion(
60-
mavenLocalDirectory: File,
61-
version: String,
62-
) {
63-
val versionJar =
64-
mavenLocalDirectory.resolve(
65-
"org/spigotmc/spigot/$version-R0.1-SNAPSHOT/spigot-$version-R0.1-SNAPSHOT.jar",
66-
)
67-
if (versionJar.exists()) {
68-
logger.lifecycle("Skipping $version as Spigot JAR is found at ${versionJar.absolutePath}")
69-
return
70-
}
71-
val jar = buildToolsLocation.get().asFile
72-
val versionDir = jar.parentFile.resolve(version)
73-
fileSystemOperations.copy {
74-
from(jar)
75-
into(versionDir)
76-
}
77-
execOperations.javaexec {
78-
args(listOf("--rev", version))
79-
workingDir = versionDir.absoluteFile
80-
jvmArgs = listOf("-Xmx1024M")
81-
classpath(buildToolsLocation)
82-
}
69+
normalVersion(mavenLocalDirectory, version)
70+
if (includeRemapped.getOrElse(false)) {
71+
remappedVersion(mavenLocalDirectory, version)
8372
}
73+
}
8474

85-
private fun remappedVersion(
86-
mavenLocalDirectory: File,
87-
version: String,
88-
) {
89-
val versionJar =
90-
mavenLocalDirectory.resolve(
91-
"org/spigotmc/spigot/$version-R0.1-SNAPSHOT/spigot-$version-R0.1-SNAPSHOT-remapped-mojang.jar",
92-
)
93-
if (versionJar.exists()) {
94-
logger.lifecycle("Skipping $version as Spigot remapped JAR is found at ${versionJar.absolutePath}")
95-
return
96-
}
97-
val jar = buildToolsLocation.get().asFile
98-
val versionDir = jar.parentFile.resolve(version)
99-
fileSystemOperations.copy {
100-
from(jar)
101-
into(versionDir)
102-
}
103-
execOperations.javaexec {
104-
args(listOf("--rev", version, "--remapped"))
105-
workingDir = versionDir.absoluteFile
106-
jvmArgs = listOf("-Xmx1024M")
107-
classpath(buildToolsLocation)
108-
}
75+
private fun normalVersion(
76+
mavenLocalDirectory: File,
77+
version: String,
78+
) {
79+
val versionJar =
80+
mavenLocalDirectory.resolve(
81+
"org/spigotmc/spigot/$version-R0.1-SNAPSHOT/spigot-$version-R0.1-SNAPSHOT.jar",
82+
)
83+
if (versionJar.exists()) {
84+
logger.lifecycle("Skipping $version as Spigot JAR is found at ${versionJar.absolutePath}")
85+
return
86+
}
87+
val jar = buildToolsLocation.get().asFile
88+
val versionDir = jar.parentFile.resolve(version)
89+
fileSystemOperations.copy {
90+
from(jar)
91+
into(versionDir)
92+
}
93+
execOperations.javaexec {
94+
args(listOf("--rev", version))
95+
workingDir = versionDir.absoluteFile
96+
jvmArgs = listOf("-Xmx1024M")
97+
classpath(buildToolsLocation)
98+
executable(launcher.get().executablePath)
99+
}
100+
}
101+
102+
private fun remappedVersion(
103+
mavenLocalDirectory: File,
104+
version: String,
105+
) {
106+
val versionJar =
107+
mavenLocalDirectory.resolve(
108+
"org/spigotmc/spigot/$version-R0.1-SNAPSHOT/spigot-$version-R0.1-SNAPSHOT-remapped-mojang.jar",
109+
)
110+
if (versionJar.exists()) {
111+
logger.lifecycle("Skipping $version as Spigot remapped JAR is found at ${versionJar.absolutePath}")
112+
return
113+
}
114+
val jar = buildToolsLocation.get().asFile
115+
val versionDir = jar.parentFile.resolve(version)
116+
fileSystemOperations.copy {
117+
from(jar)
118+
into(versionDir)
119+
}
120+
execOperations.javaexec {
121+
args(listOf("--rev", version, "--remapped"))
122+
workingDir = versionDir.absoluteFile
123+
jvmArgs = listOf("-Xmx1024M")
124+
classpath(buildToolsLocation)
125+
executable(launcher.get().executablePath)
109126
}
110127
}
128+
}

version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=7.2.*
1+
version=8.0.*

versions.properties

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ plugin.io.gitlab.arturbosch.detekt=1.23.6
1313

1414
plugin.org.jetbrains.dokka=1.9.20
1515

16-
plugin.org.jlleitschuh.gradle.ktlint=12.1.0
17-
## # available=12.1.1
16+
plugin.org.jlleitschuh.gradle.ktlint=12.1.1
1817

1918
plugin.org.shipkit.shipkit-auto-version=2.0.7
2019

0 commit comments

Comments
 (0)