Skip to content

Commit 13e277d

Browse files
committed
migrate to gradle kts
1 parent 082f41a commit 13e277d

21 files changed

+332
-149
lines changed

.gitignore

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,32 @@
1-
*.class
1+
*.lock
2+
*.bin
23
*.log
3-
*.ctxt
4-
.mtj.tmp/
5-
*.jar
6-
*.war
7-
*.nar
8-
*.ear
9-
*.zip
10-
*.tar.gz
11-
*.rar
12-
hs_err_pid*
13-
.gradle
14-
**/build/
15-
!src/**/build/
16-
gradle-app.setting
17-
!gradle-wrapper.jar
18-
.gradletasknamecache
4+
*.txt
5+
*.iml
6+
*.ipr
7+
*.iws
8+
*.info
9+
*.xml
10+
*.launch
11+
*.prefs
12+
*.tree
13+
*.class
14+
*.cfg
15+
*.gz
16+
*.kotlin_module
17+
*.ini
18+
eclipse/
19+
out/
20+
build/
21+
idea/
1922
.idea/
23+
.gradle/
24+
*.psd
25+
*.jar1
26+
*.psd
27+
*.patch
28+
src/main/generated/
29+
src/main/resources/mixins.*.json
2030
run/
21-
out/
31+
runDir/
32+
.gitattributes
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
plugins {
3+
`kotlin-dsl`
4+
}
5+
6+
dependencies {
7+
implementation(libs.gradle.kotlin)
8+
implementation(libs.gradle.gitversion)
9+
implementation(libs.forge.gradle) { isChanging = true }
10+
implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
11+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import net.minecraftforge.gradle.common.BaseExtension
2+
import org.gradle.accessors.dm.LibrariesForLibs
3+
import org.gradle.api.Project
4+
import org.gradle.api.artifacts.Dependency
5+
import org.gradle.api.artifacts.dsl.DependencyHandler
6+
import org.gradle.api.tasks.SourceSetContainer
7+
import org.gradle.kotlin.dsl.the
8+
import org.gradle.kotlin.dsl.withType
9+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
10+
11+
fun BaseExtension.commonMinecraft(project: Project) {
12+
project.configureCompileOptions()
13+
minecraftSettings()
14+
}
15+
16+
private fun BaseExtension.minecraftSettings() {
17+
version = "1.7.10-10.13.4.1614-1.7.10"
18+
runDir = "runDir"
19+
}
20+
21+
private fun Project.configureCompileOptions() {
22+
tasks.withType<KotlinCompile>().configureEach {
23+
kotlinOptions {
24+
jvmTarget = "1.8"
25+
}
26+
}
27+
}
28+
29+
fun DependencyHandler.implementation(dependencyNotation: Any): Dependency? =
30+
add("implementation", dependencyNotation)
31+
32+
fun DependencyHandler.api(dependencyNotation: Any): Dependency? =
33+
add("api", dependencyNotation)
34+
35+
fun DependencyHandler.projectImplementation(depName: String) {
36+
add("implementation", (project(mapOf("path" to depName))))
37+
}
38+
39+
val Project.libs: LibrariesForLibs
40+
get() = the<LibrariesForLibs>()
41+
42+
val Project.sourceSets: SourceSetContainer
43+
get() = the<SourceSetContainer>()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
@file:Suppress("UnstableApiUsage")
2+
3+
import net.minecraftforge.gradle.common.BaseExtension
4+
5+
plugins {
6+
id("forge")
7+
kotlin("jvm")
8+
}
9+
10+
configure<BaseExtension> {
11+
commonMinecraft(project)
12+
}
13+
14+
java {
15+
sourceCompatibility = JavaVersion.VERSION_1_8
16+
targetCompatibility = JavaVersion.VERSION_1_8
17+
}
18+
19+
tasks.withType<JavaCompile> {
20+
options.encoding = "UTF-8"
21+
}
22+
23+
val modName: String by extra
24+
val modId: String by extra
25+
26+
tasks.named<ProcessResources>("processResources") {
27+
inputs.property("version", project.version)
28+
inputs.property("mcversion", "1.7.10")
29+
filesMatching("mcmod.info") {
30+
expand(
31+
"minecraftVersion" to "1.7.10",
32+
"modId" to modId,
33+
"modVersion" to project.version,
34+
"modName" to modName,
35+
)
36+
}
37+
}
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
@file:Suppress("DSL_SCOPE_VIOLATION")
2+
3+
import com.palantir.gradle.gitversion.VersionDetails
4+
import groovy.lang.Closure
5+
import groovy.util.Node
6+
import groovy.util.NodeList
7+
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName
8+
9+
plugins {
10+
kotlin("jvm")
11+
id("com.palantir.git-version")
12+
`maven-publish`
13+
`java-library`
14+
}
15+
16+
val modId: String by extra
17+
val modName: String by extra
18+
val modGroup: String by extra
19+
val versionDetails: Closure<VersionDetails> by extra
20+
val gitDetails = versionDetails()
21+
group = modGroup
22+
23+
var versionOverride: String? = System.getenv("VERSION") ?: null
24+
var identifiedVersion = runCatching {
25+
versionOverride ?: if (System.getenv("CI") != null) gitDetails.lastTag else gitDetails.version
26+
}.getOrElse {
27+
"unknown".also {
28+
versionOverride = it
29+
}
30+
}
31+
32+
version = identifiedVersion
33+
val modVersion = identifiedVersion
34+
35+
java {
36+
sourceCompatibility = JavaVersion.VERSION_1_8
37+
targetCompatibility = JavaVersion.VERSION_1_8
38+
}
39+
40+
archivesName.set(modId)
41+
42+
tasks.withType<GenerateModuleMetadata> {
43+
enabled = false
44+
mustRunAfter("reobf")
45+
}
46+
47+
configure<PublishingExtension> {
48+
publications {
49+
register("mavenJava", MavenPublication::class) {
50+
from(components["java"])
51+
pom.withXml {
52+
removeRuntimeDependencies(asNode())
53+
}
54+
val devJar by tasks.registering(Jar::class) {
55+
from(sourceSets["main"].output)
56+
archiveClassifier.set("dev")
57+
}
58+
artifact(devJar.get())
59+
groupId = "space.impact"
60+
artifactId = modId
61+
version = identifiedVersion
62+
}
63+
}
64+
repositories {
65+
maven {
66+
url = uri("https://maven.accident.space/repository/maven-releases/")
67+
credentials {
68+
username = System.getenv("MAVEN_USER") ?: "NONE"
69+
password = System.getenv("MAVEN_PASSWORD") ?: "NONE"
70+
}
71+
}
72+
}
73+
}
74+
75+
//hack https://youtrack.jetbrains.com/issue/KT-28355
76+
fun removeRuntimeDependencies(pomNode: Node) {
77+
val dependencyNodes: NodeList = pomNode.get("dependencies") as NodeList
78+
val dependencies = dependencyNodes.lastOrNull() as? Node
79+
val removeCandidate = arrayListOf<Node>()
80+
dependencies?.children()?.forEach { dependency ->
81+
(dependency as? Node)?.children()
82+
?.mapNotNull { it as? Node }
83+
?.filter { (it.value() as? NodeList)?.lastOrNull() == "runtime" || it.value() == "org.jetbrains.kotlin" }
84+
?.forEach { removeCandidate += it.parent() }
85+
}
86+
removeCandidate.forEach {
87+
it.parent().remove(it)
88+
}
89+
}

build-logic/settings.gradle.kts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
@file:Suppress("UnstableApiUsage")
2+
3+
buildscript {
4+
repositories {
5+
mavenCentral()
6+
maven("https://maven.accident.space/repository/maven-public/")
7+
maven("https://maven.minecraftforge.net")
8+
maven("https://oss.sonatype.org/content/repositories/snapshots/")
9+
maven("https://jitpack.io")
10+
maven("https://plugins.gradle.org/m2/")
11+
mavenLocal()
12+
}
13+
}
14+
15+
dependencyResolutionManagement {
16+
repositories {
17+
mavenCentral()
18+
maven("https://maven.accident.space/repository/maven-public/")
19+
maven("https://maven.minecraftforge.net")
20+
maven("https://oss.sonatype.org/content/repositories/snapshots/")
21+
maven("https://jitpack.io")
22+
maven("https://plugins.gradle.org/m2/")
23+
mavenLocal()
24+
}
25+
26+
versionCatalogs {
27+
create("libs") {
28+
from(files("../gradle/libs.versions.toml"))
29+
}
30+
}
31+
}
32+
33+
include(":plugins")

build.gradle

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

build.gradle.kts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
plugins {
2+
alias(libs.plugins.buildconfig)
3+
id("minecraft")
4+
id("publish")
5+
}
6+
7+
repositories {
8+
mavenCentral()
9+
mavenLocal()
10+
}
11+
12+
val modId: String by extra
13+
val modName: String by extra
14+
val modGroup: String by extra
15+
16+
buildConfig {
17+
packageName("space.impact.$modId")
18+
buildConfigField("String", "MODID", "\"${modId}\"")
19+
buildConfigField("String", "MODNAME", "\"${modName}\"")
20+
buildConfigField("String", "VERSION", "\"${project.version}\"")
21+
buildConfigField("String", "GROUPNAME", "\"${modGroup}\"")
22+
useKotlinOutput { topLevelConstants = true }
23+
}
24+
25+
dependencies {
26+
compileOnly(fileTree(mapOf("dir" to "libs/", "include" to listOf("*.jar"))))
27+
}

gradle.properties

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
modGroup = space.impact
2-
modVersion = 0.0.2
3-
modBaseName = ImpactAPI
4-
5-
forgeVersion = 1.7.10-10.13.4.1614-1.7.10
2+
modId = impactapi
3+
modName = ImpactAPI

0 commit comments

Comments
 (0)