quilt-kotlin-template-mod/build.gradle.kts
2022-12-04 16:56:34 +00:00

154 lines
4.5 KiB
Text

// This is to suppress false warnings generated by a bug in IntelliJ
@file:Suppress("DSL_SCOPE_VIOLATION", "MISSING_DEPENDENCY_CLASS", "FUNCTION_CALL_EXPECTED", "PropertyName")
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
java
`maven-publish`
alias(libs.plugins.kotlin)
alias(libs.plugins.quilt.loom)
}
val archives_base_name: String by project
group = "com.example"
version = project.version.toString()
base.archivesName.set(archives_base_name)
val javaVersion = 17
repositories {
// Add repositories to retrieve artifacts from in here.
// You should only use this when depending on other mods because
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
}
// All the dependencies are declared at gradle/libs.version.toml and referenced with "libs.<id>"
// See https://docs.gradle.org/current/userguide/platforms.html for information on how version catalogs work.
dependencies {
minecraft(libs.minecraft)
mappings(
variantOf(libs.quilt.mappings) {
classifier("intermediary-v2")
}
)
// Replace the above line with the block below if you want to use Mojang mappings as your primary mappings, falling back on QM for parameters and Javadocs
/*
mappings(
loom.layered {
mappings(variantOf(libs.quilt.mappings) { classifier("intermediary-v2") })
officialMojangMappings()
}
)
*/
modImplementation(libs.quilt.loader)
// QSL is not a complete API; You will need Quilted Fabric API to fill in the gaps.
// Quilted Fabric API will automatically pull in the correct QSL version.
modImplementation(libs.qfapi)
// modImplementation(libs.bundles.qfapi) // If you wish to use the deprecated Fabric API modules
modImplementation(libs.qkl)
}
tasks {
withType<KotlinCompile> {
kotlinOptions {
jvmTarget = javaVersion.toString()
languageVersion = libs.plugins.kotlin.get().version.strictVersion
incremental = true
}
}
withType<JavaCompile> {
options.encoding = "UTF-8"
options.isDeprecation = true
options.isIncremental = true
options.release.set(javaVersion)
}
processResources {
inputs.property("version", project.version)
filesMatching("quilt.mod.json") {
expand(
mapOf(
"version" to project.version
)
)
}
}
// Change the gradle version here and run `./gradlew wrapper` or `gradle wrapper` to update gradle scripts
// BIN distribution should be sufficient for the majority of mods
wrapper {
gradleVersion = "7.6"
distributionType = Wrapper.DistributionType.BIN
}
remapJar {
dependsOn(remapSourcesJar)
}
jar {
from("LICENSE")
}
}
kotlin {
jvmToolchain(javaVersion)
}
java {
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
// If this mod is going to be a library, then it should also generate Javadocs in order to aid with development.
// Uncomment this line to generate them.
// withJavadocJar()
// Still required by IDEs such as Eclipse and VSC
sourceCompatibility = JavaVersion.toVersion(javaVersion)
targetCompatibility = JavaVersion.toVersion(javaVersion)
}
val sourceJar = task("sourceJar", Jar::class) {
dependsOn(tasks["classes"])
archiveClassifier.set("source")
from(sourceSets.main.get().allSource)
}
val javadoc = task("javadocJar", Jar::class) {
archiveClassifier.set("javadoc")
from(tasks.javadoc)
from(tasks.javadoc)
}
// Configure the maven publication
publishing {
publications {
create<MavenPublication>("Maven") {
from(components.getByName("java"))
artifact(javadoc)
artifact(sourceJar)
}
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}
}