mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2024-11-13 05:54:01 +01:00
e1b0cebc2c
- Use convention plugins for common build logic - Convention plugins get to be applied in the plugins block and can load other plugins - Move GeneratePackageInfosTask to its own file in buildSrc - Apply GeneratePackageInfosTask to every sourceSet
84 lines
2.6 KiB
Groovy
84 lines
2.6 KiB
Groovy
plugins {
|
|
id 'flywheel.subproject'
|
|
}
|
|
|
|
sourceSets {
|
|
// Loom only populates mc stuff to the main source set,
|
|
// so grab that here and use it for the others.
|
|
// Note that the `+` operator does NOT perform a deep copy
|
|
// of a FileCollection, so this object is shared between
|
|
// the source sets and we should avoid mutating it.
|
|
FileCollection mcCompileClassPath = main.compileClasspath
|
|
|
|
SourceSet api = api {
|
|
compileClasspath = mcCompileClassPath
|
|
}
|
|
SourceSet lib = lib {
|
|
compileClasspath = mcCompileClassPath + api.output
|
|
}
|
|
SourceSet backend = backend {
|
|
compileClasspath = mcCompileClassPath + api.output + lib.output
|
|
}
|
|
|
|
main {
|
|
// Assign here rather than concatenate to avoid modifying the mcCompileClassPath FileCollection
|
|
compileClasspath = mcCompileClassPath + api.output + lib.output + backend.output
|
|
}
|
|
|
|
test {
|
|
// Only test needs runtimeClasspath filled since the game shouldn't run from common alone.
|
|
// Fine to concatenate here.
|
|
compileClasspath += api.output + lib.output + backend.output
|
|
runtimeClasspath += api.output + lib.output + backend.output
|
|
}
|
|
}
|
|
|
|
TaskProvider<Jar> createJarAndOutgoingConfiguration(String name) {
|
|
return createJarAndOutgoingConfiguration(name, sourceSets.named(name).get())
|
|
}
|
|
|
|
TaskProvider<Jar> createJarAndOutgoingConfiguration(String name, SourceSet sourceSet) {
|
|
def config = configurations.register("common${name.capitalize()}") {
|
|
canBeConsumed = true
|
|
canBeResolved = false
|
|
}
|
|
def jarTask = tasks.register("${name}Jar", Jar) {
|
|
archiveClassifier.set(name)
|
|
from sourceSet.output
|
|
}
|
|
|
|
artifacts.add(config.name, jarTask)
|
|
|
|
return jarTask
|
|
}
|
|
|
|
// TODO: repackage these for maven publication
|
|
def apiJar = createJarAndOutgoingConfiguration("api")
|
|
def libJar = createJarAndOutgoingConfiguration("lib")
|
|
def backendJar = createJarAndOutgoingConfiguration("backend")
|
|
def implJar = createJarAndOutgoingConfiguration("impl", sourceSets.main)
|
|
|
|
dependencies {
|
|
modCompileOnly "net.fabricmc:fabric-loader:${fabric_loader_version}"
|
|
|
|
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
register('mavenIntermediary', MavenPublication) {
|
|
from(components['java'])
|
|
artifactId = "flywheel-${project.name}-intermediary-${artifact_minecraft_version}"
|
|
}
|
|
register('mavenMojmap', MavenPublication) {
|
|
artifact jar
|
|
artifact sourcesJar
|
|
artifactId = "flywheel-${project.name}-mojmap-${artifact_minecraft_version}"
|
|
}
|
|
}
|
|
}
|