Skip to content

Commit 01f4198

Browse files
committed
Move general configuration from CoreTasks to PaperweightCore
1 parent ef8e7d4 commit 01f4198

File tree

4 files changed

+79
-70
lines changed

4 files changed

+79
-70
lines changed

paperweight-core/src/main/kotlin/io/papermc/paperweight/core/PaperweightCore.kt

Lines changed: 69 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,35 @@ import io.papermc.paperweight.core.extension.PaperweightCoreExtension
2828
import io.papermc.paperweight.core.taskcontainers.CoreTasks
2929
import io.papermc.paperweight.core.taskcontainers.DevBundleTasks
3030
import io.papermc.paperweight.core.taskcontainers.PaperclipTasks
31+
import io.papermc.paperweight.core.util.createBuildTasks
3132
import io.papermc.paperweight.tasks.*
3233
import io.papermc.paperweight.util.*
3334
import io.papermc.paperweight.util.constants.*
3435
import io.papermc.paperweight.util.data.mache.*
36+
import javax.inject.Inject
3537
import org.gradle.api.Plugin
3638
import org.gradle.api.Project
39+
import org.gradle.api.artifacts.dsl.DependencyFactory
40+
import org.gradle.api.file.ProjectLayout
41+
import org.gradle.api.model.ObjectFactory
42+
import org.gradle.api.plugins.JavaPlugin
43+
import org.gradle.api.plugins.JavaPluginExtension
3744
import org.gradle.api.provider.Property
3845
import org.gradle.api.tasks.Delete
46+
import org.gradle.api.tasks.SourceSet
3947
import org.gradle.api.tasks.bundling.AbstractArchiveTask
4048
import org.gradle.kotlin.dsl.*
4149

4250
abstract class PaperweightCore : Plugin<Project> {
51+
@get:Inject
52+
abstract val layout: ProjectLayout
53+
54+
@get:Inject
55+
abstract val dependencyFactory: DependencyFactory
56+
57+
@get:Inject
58+
abstract val objects: ObjectFactory
59+
4360
override fun apply(target: Project) {
4461
Git.checkForGit(target.providers)
4562
printId<PaperweightCore>("paperweight-core", target.gradle)
@@ -53,53 +70,71 @@ abstract class PaperweightCore : Plugin<Project> {
5370
target.tasks.register<Delete>("cleanCache") {
5471
group = GENERAL_TASK_GROUP
5572
description = "Delete the project setup cache and task outputs."
56-
delete(target.layout.cache)
73+
delete(layout.cache)
5774
}
5875

5976
target.configurations.create(REMAPPER_CONFIG) {
6077
defaultDependencies {
61-
add(
62-
target.dependencies.create(
63-
"${listOf("net", "fabricmc").joinToString(".")}:tiny-remapper:${LibraryVersions.TINY_REMAPPER}:fat"
64-
) {
65-
isTransitive = false
66-
}
67-
)
78+
// Join list to avoid relocations breaking the string
79+
val coordinates = "${listOf("net", "fabricmc").joinToString(".")}:tiny-remapper:${LibraryVersions.TINY_REMAPPER}:fat"
80+
val remapper = dependencyFactory.create(coordinates).also { it.isTransitive = false }
81+
add(remapper)
6882
}
6983
}
7084
target.configurations.create(PAPERCLIP_CONFIG)
71-
target.configurations.create(MACHE_CONFIG) {
72-
attributes.attribute(MacheOutput.ATTRIBUTE, target.objects.named(MacheOutput.ZIP))
85+
val macheConfig = target.configurations.create(MACHE_CONFIG) {
86+
attributes.attribute(MacheOutput.ATTRIBUTE, objects.named(MacheOutput.ZIP))
7387
}
7488
target.configurations.register(MACHE_CODEBOOK_CONFIG) { isTransitive = false }
7589
target.configurations.register(MACHE_REMAPPER_CONFIG) { isTransitive = false }
7690
target.configurations.register(MACHE_DECOMPILER_CONFIG) { isTransitive = false }
7791
target.configurations.register(MACHE_PARAM_MAPPINGS_CONFIG) { isTransitive = false }
7892
target.configurations.register(MACHE_CONSTANTS_CONFIG) { isTransitive = false }
79-
target.configurations.register(MACHE_MINECRAFT_LIBRARIES_CONFIG)
93+
val macheMinecraftLibrariesConfig = target.configurations.register(MACHE_MINECRAFT_LIBRARIES_CONFIG) {
94+
extendsFrom(macheConfig)
95+
}
96+
target.configurations.register(MACHE_MINECRAFT_CONFIG) {
97+
extendsFrom(macheMinecraftLibrariesConfig.get())
98+
}
8099
target.configurations.consumable(MAPPED_JAR_OUTGOING_CONFIG) // For source generator modules
81-
target.configurations.register(MACHE_MINECRAFT_CONFIG)
82100
target.configurations.register(JST_CONFIG) {
83101
defaultDependencies {
84-
// add(project.dependencies.create("net.neoforged.jst:jst-cli-bundle:${JSTVersion.VERSION}"))
102+
// add(project.dependencies.create("net.neoforged.jst:jst-cli-bundle:${LibraryVersions.JST}"))
85103
add(target.dependencies.create("io.papermc.jst:jst-cli-bundle:${LibraryVersions.JST}"))
86104
}
87105
}
88106

107+
// impl extends minecraft
108+
target.configurations.named(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME) {
109+
extendsFrom(macheMinecraftLibrariesConfig.get())
110+
}
111+
89112
if (target.providers.gradleProperty("paperweight.dev").orNull == "true") {
90113
target.tasks.register<CreateDiffOutput>("diff") {
91114
inputDir.convention(ext.paper.paperServerDir.map { it.dir("src/main/java") })
92115
val prop = target.providers.gradleProperty("paperweight.diff.output")
93116
if (prop.isPresent) {
94-
baseDir.convention(target.layout.projectDirectory.dir(prop))
117+
baseDir.convention(layout.projectDirectory.dir(prop))
95118
}
96119
}
97120
}
98121

99-
val mache: Property<MacheMeta> = target.objects.property()
122+
val mache: Property<MacheMeta> = objects.property()
100123
val tasks = CoreTasks(target, mache)
101124
val devBundleTasks = DevBundleTasks(target, tasks)
102125

126+
target.configurations.named(MAPPED_JAR_OUTGOING_CONFIG) {
127+
outgoing.artifact(tasks.macheRemapJar)
128+
}
129+
target.configurations.named(MACHE_MINECRAFT_CONFIG) {
130+
withDependencies {
131+
val minecraftJar = dependencyFactory.create(
132+
layout.files(tasks.macheRemapJar.flatMap { it.outputJar })
133+
)
134+
add(minecraftJar)
135+
}
136+
}
137+
103138
val jar = target.tasks.named("jar", AbstractArchiveTask::class)
104139
tasks.generateReobfMappings {
105140
inputJar.set(jar.flatMap { it.archiveFile })
@@ -110,8 +145,9 @@ abstract class PaperweightCore : Plugin<Project> {
110145
val (includeMappings, reobfJar) = target.createBuildTasks(
111146
ext.spigot.packageVersion,
112147
ext.reobfPackagesToFix,
113-
tasks.generateRelocatedReobfMappings
148+
tasks.generateRelocatedReobfMappings.flatMap { it.outputMappings },
114149
)
150+
115151
PaperclipTasks(
116152
target,
117153
ext.bundlerJarName,
@@ -125,15 +161,30 @@ abstract class PaperweightCore : Plugin<Project> {
125161
)
126162

127163
target.afterEvaluate {
128-
target.repositories {
164+
// add Minecraft source dirs
165+
// for some reason doing this in #apply instead of afterEvaluate causes fork compileJava to take 5x longer (due to order of source dirs)
166+
target.extensions.configure<JavaPluginExtension> {
167+
sourceSets.named(SourceSet.MAIN_SOURCE_SET_NAME) {
168+
java {
169+
srcDirs(layout.projectDirectory.dir("src/minecraft/java"))
170+
}
171+
resources {
172+
srcDirs(layout.projectDirectory.dir("src/minecraft/resources"))
173+
}
174+
}
175+
}
176+
177+
repositories {
129178
maven(ext.macheRepo) {
130179
name = MACHE_REPO_NAME
131180
content { onlyForConfigurations(MACHE_CONFIG) }
132181
}
133182
}
134183

135184
// load mache
136-
mache.set(project.configurations.resolveMacheMeta())
185+
mache.set(configurations.resolveMacheMeta())
186+
mache.get().addRepositories(this)
187+
mache.get().addDependencies(this)
137188

138189
tasks.afterEvaluate()
139190

paperweight-core/src/main/kotlin/io/papermc/paperweight/core/taskcontainers/CoreTasks.kt

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,7 @@ import io.papermc.paperweight.util.constants.*
3636
import io.papermc.paperweight.util.data.mache.*
3737
import java.nio.file.Files
3838
import org.gradle.api.Project
39-
import org.gradle.api.plugins.JavaPlugin
40-
import org.gradle.api.plugins.JavaPluginExtension
4139
import org.gradle.api.provider.Property
42-
import org.gradle.api.tasks.SourceSet
4340
import org.gradle.api.tasks.TaskContainer
4441
import org.gradle.kotlin.dsl.*
4542

@@ -128,49 +125,7 @@ class CoreTasks(
128125
}
129126

130127
fun afterEvaluate() {
131-
val mache = mache.get()
132-
133128
setupPatchingTasks()
134-
135-
project.configurations.named(MAPPED_JAR_OUTGOING_CONFIG) {
136-
outgoing.artifact(macheRemapJar)
137-
}
138-
139-
// setup repos
140-
mache.addRepositories(project)
141-
142-
// setup mc deps
143-
project.configurations.named(MACHE_MINECRAFT_LIBRARIES_CONFIG) {
144-
extendsFrom(project.configurations.getByName(MACHE_CONFIG))
145-
}
146-
project.configurations.named(MACHE_MINECRAFT_CONFIG) {
147-
extendsFrom(project.configurations.getByName(MACHE_MINECRAFT_LIBRARIES_CONFIG))
148-
withDependencies {
149-
add(
150-
project.dependencies.create(
151-
project.files(macheRemapJar.flatMap { it.outputJar })
152-
)
153-
)
154-
}
155-
}
156-
157-
// setup mache deps
158-
mache.addDependencies(project)
159-
160-
// impl extends minecraft
161-
project.configurations.named(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME) {
162-
extendsFrom(project.configurations.getByName(MACHE_MINECRAFT_LIBRARIES_CONFIG))
163-
}
164-
165-
// add Minecraft source dir
166-
project.the<JavaPluginExtension>().sourceSets.named(SourceSet.MAIN_SOURCE_SET_NAME) {
167-
java {
168-
srcDirs(project.projectDir.resolve("src/minecraft/java"))
169-
}
170-
resources {
171-
srcDirs(project.projectDir.resolve("src/minecraft/resources"))
172-
}
173-
}
174129
}
175130

176131
private fun setupPatchingTasks() {

paperweight-core/src/main/kotlin/io/papermc/paperweight/core/taskcontainers/PaperclipTasks.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
package io.papermc.paperweight.core.taskcontainers
2424

2525
import com.google.gson.JsonObject
26+
import io.papermc.paperweight.core.util.reobfRequiresDebug
2627
import io.papermc.paperweight.tasks.*
2728
import io.papermc.paperweight.util.*
2829
import io.papermc.paperweight.util.constants.*

paperweight-lib/src/main/kotlin/io/papermc/paperweight/util/project-util.kt renamed to paperweight-core/src/main/kotlin/io/papermc/paperweight/core/util/project-util.kt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@
2020
* USA
2121
*/
2222

23-
package io.papermc.paperweight.util
23+
package io.papermc.paperweight.core.util
2424

2525
import io.papermc.paperweight.PaperweightException
2626
import io.papermc.paperweight.tasks.*
27+
import io.papermc.paperweight.util.*
2728
import io.papermc.paperweight.util.constants.*
2829
import org.gradle.api.Project
2930
import org.gradle.api.Task
31+
import org.gradle.api.file.RegularFile
3032
import org.gradle.api.provider.Provider
3133
import org.gradle.api.tasks.TaskProvider
3234
import org.gradle.api.tasks.bundling.AbstractArchiveTask
@@ -35,8 +37,8 @@ import org.gradle.kotlin.dsl.*
3537
fun Project.createBuildTasks(
3638
craftBukkitPackageVersion: Provider<String>,
3739
packagesToFix: Provider<List<String>?>,
38-
relocatedReobfMappings: TaskProvider<GenerateRelocatedReobfMappings>
39-
): ServerTasks {
40+
relocatedReobfMappings: Provider<RegularFile>
41+
): ServerBuildTasks {
4042
val fixJarForReobf by tasks.registering<FixJarForReobf> {
4143
group = "build"
4244
inputJar.set(tasks.named("jar", AbstractArchiveTask::class).flatMap { it.archiveFile })
@@ -46,7 +48,7 @@ fun Project.createBuildTasks(
4648
val includeMappings by tasks.registering<IncludeMappings> {
4749
group = "build"
4850
inputJar.set(fixJarForReobf.flatMap { it.outputJar })
49-
mappings.set(relocatedReobfMappings.flatMap { it.outputMappings })
51+
mappings.set(relocatedReobfMappings)
5052
mappingsDest.set("META-INF/mappings/reobf.tiny")
5153
}
5254

@@ -72,7 +74,7 @@ fun Project.createBuildTasks(
7274

7375
inputJar.set(relocateConstants.flatMap { it.outputJar })
7476

75-
mappingsFile.set(relocatedReobfMappings.flatMap { it.outputMappings })
77+
mappingsFile.set(relocatedReobfMappings)
7678

7779
fromNamespace.set(DEOBF_NAMESPACE)
7880
toNamespace.set(SPIGOT_NAMESPACE)
@@ -83,7 +85,7 @@ fun Project.createBuildTasks(
8385
outputJar.set(layout.buildDirectory.map { it.dir("libs").file("${project.name}-${project.version}-reobf.jar") })
8486
}
8587

86-
return ServerTasks(includeMappings, reobfJar)
88+
return ServerBuildTasks(includeMappings, reobfJar)
8789
}
8890

8991
fun Task.reobfRequiresDebug() {
@@ -98,7 +100,7 @@ fun Task.reobfRequiresDebug() {
98100
}
99101
}
100102

101-
data class ServerTasks(
103+
data class ServerBuildTasks(
102104
val includeMappings: TaskProvider<IncludeMappings>,
103105
val reobfJar: TaskProvider<RemapJar>,
104106
)

0 commit comments

Comments
 (0)