diff --git a/CHANGELOG.md b/CHANGELOG.md index 177c6d5b..ad9c7df3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,3 +21,4 @@ This changelog only contains the changes that are unreleased. For changes for in - Add `xrandr` as a dependency for RPM [#691] - Update packaging scripts - Implement view model for VanillaPacksTab [#717] +- Convert Gradle Groovy scripts to Kotlin scripts [#724] diff --git a/build.gradle b/build.gradle deleted file mode 100644 index e818a05b..00000000 --- a/build.gradle +++ /dev/null @@ -1,316 +0,0 @@ -import java.text.SimpleDateFormat -import java.util.stream.Collectors - -buildscript { - repositories { - mavenCentral() - maven { - url 'https://jitpack.io' - content { - includeGroup "com.github.RyanTheAllmighty.gettext" - } - } - } - dependencies { - classpath 'com.github.RyanTheAllmighty.gettext:gettext-gradle-plugin:aab5c30bf8' - } -} - -plugins { - id 'java' - id 'application' - - id 'org.cadixdev.licenser' version '0.6.1' - id 'com.adarshr.test-logger' version '3.2.0' - id 'edu.sc.seis.macAppBundle' version '2.3.0' - id 'edu.sc.seis.launch4j' version '2.5.3' - id 'de.undercouch.download' version '5.1.0' - id 'com.github.johnrengelman.shadow' version '7.1.2' - id 'com.github.ben-manes.versions' version '0.42.0' - id "org.jetbrains.kotlin.jvm" version "1.8.0" - id 'com.apollographql.apollo' version '2.5.14' -} - -apply plugin: 'org.mini2Dx.gettext' - -sourceCompatibility = '1.8' -targetCompatibility = '1.8' - -group = 'com.atlauncher' -version = rootProject.file('src/main/resources/version').text.trim().replace('.Beta', '') - -repositories { - mavenCentral() - gradlePluginPortal() - maven { - url 'https://libraries.minecraft.net' - } - maven { - url 'https://jitpack.io' - content { - includeGroup "com.github.RyanTheAllmighty.gettext" - includeGroup "com.github.Vatuu" - } - } -} - -dependencies { - implementation 'net.java.dev.jna:jna:5.11.0' - implementation 'net.java.dev.jna:jna-platform:5.11.0' - implementation 'com.google.code.gson:gson:2.9.0' - implementation 'com.google.guava:guava:31.1-jre' - implementation 'org.tukaani:xz:1.9' - implementation 'com.mojang:authlib:1.5.21' - implementation 'net.iharder:base64:2.3.9' - implementation 'com.github.Vatuu:discord-rpc:1.6.2' - implementation 'net.sf.jopt-simple:jopt-simple:5.0.4' - implementation 'org.zeroturnaround:zt-zip:1.15' - implementation 'com.squareup.okhttp3:okhttp:4.9.3' - implementation 'com.squareup.okhttp3:okhttp-tls:4.9.3' - implementation 'net.mikehardy:google-analytics-java:2.0.11' - implementation 'io.sentry:sentry:6.1.4' - implementation 'com.github.RyanTheAllmighty.gettext:gettext-lib:88ae68d897' - implementation 'org.apache.logging.log4j:log4j-api:2.17.2' - implementation 'org.apache.logging.log4j:log4j-core:2.17.2' - implementation 'com.sangupta:murmur:1.0.0' - implementation 'org.apache.commons:commons-lang3:3.12.0' - implementation 'org.apache.commons:commons-text:1.10.0' - implementation 'com.formdev:flatlaf:2.3' - implementation 'com.formdev:flatlaf-extras:2.3' - implementation 'com.github.oshi:oshi-core:6.1.6' - implementation 'net.freeutils:jlhttp:2.6' - implementation 'joda-time:joda-time:2.10.14' - implementation 'org.apache.commons:commons-compress:1.21' - implementation 'org.commonmark:commonmark:0.19.0' - implementation 'com.github.hypfvieh:dbus-java:3.3.1' - implementation 'com.apollographql.apollo:apollo-runtime:2.5.14' - implementation 'com.apollographql.apollo:apollo-http-cache:2.5.14' - implementation 'com.apollographql.apollo:apollo-coroutines-support:2.5.14' - - // Kotlin - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.6.4") - - testImplementation 'junit:junit:4.13.2' - testImplementation 'org.mockito:mockito-core:4.6.1' - testImplementation 'org.mockito:mockito-inline:4.6.1' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' - testImplementation 'org.assertj:assertj-swing-junit:3.17.1' - testImplementation 'org.mock-server:mockserver-netty:5.13.2' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' - testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.8.2' -} - -application { - mainClass = 'com.atlauncher.App' - applicationDefaultJvmArgs = [ - "-Djna.nosys=true", - "-Djava.net.preferIPv4Stack=true", - "-Dawt.useSystemAAFontSettings=on", - "-Dswing.aatext=true" - ] -} - -tasks.named('test') { - // Use JUnit Platform for unit tests. - useJUnitPlatform() - - testlogger { - theme 'mocha' - } -} - -jar { - manifest { - attributes( - 'SplashScreen-Image': '/assets/image/splash-screen.png', - 'Implementation-Title': project.name, - 'Implementation-Version': archiveVersion, - 'Implementation-Vender': 'ATLauncher', - 'Main-Class': 'com.atlauncher.App', - 'Multi-Release': 'true' - ) - } -} - -apollo { - customTypeMapping = [ - "ID" : "java.lang.String", - "DateTime" : "java.util.Date" - ] - packageName = "com.atlauncher.graphql" -} - -gettext { - translations { - srcDir = 'src' - include = 'main/java/com/atlauncher/**/*.java' - excludes = [ - 'main/java/com/atlauncher/adapter/**/*.java', - 'main/java/com/atlauncher/annot/**/*.java', - 'main/java/com/atlauncher/collection/**/*.java', - 'main/java/com/atlauncher/evnt/**/*.java', - 'main/java/com/atlauncher/exceptions/**/*.java', - 'main/java/com/atlauncher/interfaces/**/*.java', - 'main/java/com/atlauncher/listener/**/*.java', - 'main/java/com/atlauncher/utils/**/*.java' - ] - commentFormat = ' #. ' - outputFilename = 'translations.pot' - } -} - -license { - header = project.file('LICENSEHEADER') - include '**/*.java' - exclude 'io/github/**/*.java' - exclude 'net/minecraft/**/*.java' - exclude 'com/atlauncher/graphql/**/*.java' - exclude 'com/atlauncher/gui/layouts/WrapLayout.java' - newLine = false - properties { - year = currentYear() - } -} - -shadowJar { - classifier = null - minimize { - exclude(dependency('org.apache.logging.log4j:.*:.*')) - exclude(dependency('com.formdev:.*:.*')) - exclude(dependency('com.github.jnr:.*:.*')) - exclude(dependency('com.github.hypfvieh:.*:.*')) - exclude(dependency('org.apache.commons:commons-compress:.*')) - } - - // these are included by dbus-java which is only used on Linux - exclude("jni/x86_64-Windows/") - exclude("jni/x86_64-SunOS/") - exclude("jni/x86_64-OpenBSD/") - exclude("jni/x86_64-FreeBSD/") - exclude("jni/x86_64-DragonFlyBSD/") - exclude("jni/sparcv9-SunOS/") - exclude("jni/ppc-AIX/") - exclude("jni/ppc64-AIX/") - exclude("jni/i386-Windows/") - exclude("jni/i386-SunOS/") - exclude("jni/Darwin/") - - classifier = '' -} - -macAppBundle { - mainClassName = 'com.atlauncher.App' - appName = 'ATLauncher' - appStyle = 'universalJavaApplicationStub' - runtimeConfigurationName = 'shadow' - jarTask = 'shadowJar' - icon = 'src/main/resources/assets/image/icon.icns' - javaProperties.put('user.dir', '$APP_ROOT/Contents/Java') - javaProperties.put('apple.laf.useScreenMenuBar', 'true') - javaExtras.put("-Djna.nosys", "true") - javaExtras.put("-Djava.net.preferIPv4Stack", "true") - javaExtras.put("-Dawt.useSystemAAFontSettings", "on") - javaExtras.put("-Dswing.aatext", "true") - bundleExtras.put("JVMVersion", project.targetCompatibility.toString() + "+") -} - -copyToResourcesJava { - rename("ATLauncher-${project.version}.jar", "ATLauncher.jar") -} - -def currentYear() { - def df = new SimpleDateFormat("yyyy") - df.setTimeZone(TimeZone.getTimeZone("UTC")) - return df.format(new Date()) -} - -launch4j { - outfile = "ATLauncher-${project.version}.exe" - jreMinVersion = "${project.targetCompatibility.toString()}" - mainClassName = 'com.atlauncher.App' - icon = "${projectDir}/src/main/resources/assets/image/icon.ico" - version = "${project.version}" - textVersion = "${project.version}" - copyright = "2013-${currentYear()} ${project.name}" - companyName = "${project.name}" - bundledJrePath = "jre/;%JAVA_HOME%;%PATH%" - jvmOptions = [ - "-Djna.nosys=true", - "-Djava.net.preferIPv4Stack=true", - "-Dawt.useSystemAAFontSettings=on", - "-Dswing.aatext=true" - ] -} - -artifacts { - archives shadowJar - archives file(project.tasks.jar.getArchivePath().getPath().replace('.jar', '.exe').replace('libs', 'launch4j')) - archives file(project.tasks.jar.getArchivePath().getPath().replace('.jar', '.zip').replace('libs', 'distributions')) -} - -test { - if (JavaVersion.current().isJava9Compatible()) { - jvmArgs '--add-opens=java.base/sun.security.x509=ALL-UNNAMED' - } -} - -task copyArtifacts(type: Copy) { - dependsOn build - from shadowJar - from file(project.tasks.jar.getArchivePath().getPath().replace('.jar', '.exe').replace('libs', 'launch4j')) - from file(project.tasks.jar.getArchivePath().getPath().replace('.jar', '.zip').replace('libs', 'distributions')) - into "${projectDir}/dist" -} - -task downloadNewerUniversalJavaApplicationStub(type: Download) { - description 'Downloads newer universalJavaApplicationStub' - src 'https://raw.githubusercontent.com/tofi86/universalJavaApplicationStub/2dbbf92b35e61194266c985c8bc6b411053a1b4a/src/universalJavaApplicationStub' - dest file("$buildDir/macApp/${project.name}.app/Contents/MacOS/universalJavaApplicationStub") - overwrite true -} - -task createTestLauncherDir { - project.file('testLauncher/dev').mkdirs() -} - -task createMacApp(type: Zip) { - dependsOn createApp, shadowJar - from("$buildDir/macApp") { - include "${project.name}.app/**" - exclude "${project.name}.app/Contents/MacOS" - } - from("$buildDir/macApp") { - include "${project.name}.app/Contents/MacOS/**" - fileMode 0777 - } - archiveName = "${project.name}-${project.version}.zip" -} - -copyArtifacts.finalizedBy { - println 'ATLauncher has been built. Distribution files are located in the dist directory.' -} - -clean.doFirst { - delete "${projectDir}/dist" -} - -project.afterEvaluate { - tasks.check { - dependsOn -= tasks.find { - it.name.equals("checkLicenses") - } - } -} - -def shouldIgnoreUpdate = { String version -> return ['ALPHA', 'BETA', 'RC', '-M'].any { it -> version.toUpperCase().contains(it) }} -tasks.named("dependencyUpdates").configure { - rejectVersionIf { - shouldIgnoreUpdate(it.candidate.version) - } -} - -build.finalizedBy copyArtifacts -shadowJar.dependsOn jar -build.dependsOn createExe, createMacApp -createApp.finalizedBy downloadNewerUniversalJavaApplicationStub diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 00000000..93ffe627 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,338 @@ +import org.gradle.api.internal.FactoryNamedDomainObjectContainer +import org.jetbrains.kotlin.de.undercouch.gradle.tasks.download.Download +import org.mini2Dx.gettext.plugin.GetTextSource +import java.text.SimpleDateFormat +import java.util.* + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath("org.mini2Dx:gettext-gradle-plugin:1.11.0") + } +} + +plugins { + java + application + + id("org.cadixdev.licenser") version "0.6.1" + id("com.adarshr.test-logger") version "3.2.0" + id("edu.sc.seis.macAppBundle") version "2.3.0" + id("edu.sc.seis.launch4j") version "2.5.3" + id("de.undercouch.download") version "5.1.0" + id("com.github.johnrengelman.shadow") version "7.1.2" + id("com.github.ben-manes.versions") version "0.45.0" + id("org.jetbrains.kotlin.jvm") version "1.8.0" + id("com.apollographql.apollo") version "2.5.14" +} + +apply(plugin = "org.mini2Dx.gettext") + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +group = "com.atlauncher" +version = rootProject.file("src/main/resources/version").readText().trim().replace(".Beta", "") + +repositories { + mavenCentral() + gradlePluginPortal() + maven("https://libraries.minecraft.net") + maven("https://jitpack.io") { + content { + includeGroup("com.github.Vatuu") + } + } +} + +dependencies { + implementation("net.java.dev.jna:jna:5.11.0") + implementation("net.java.dev.jna:jna-platform:5.11.0") + implementation("com.google.code.gson:gson:2.9.0") + implementation("com.google.guava:guava:31.1-jre") + implementation("org.tukaani:xz:1.9") + implementation("com.mojang:authlib:1.5.21") + implementation("net.iharder:base64:2.3.9") + implementation("com.github.Vatuu:discord-rpc:1.6.2") + implementation("net.sf.jopt-simple:jopt-simple:5.0.4") + implementation("org.zeroturnaround:zt-zip:1.15") + implementation("com.squareup.okhttp3:okhttp:4.9.3") + implementation("com.squareup.okhttp3:okhttp-tls:4.9.3") + implementation("net.mikehardy:google-analytics-java:2.0.11") + implementation("io.sentry:sentry:6.1.4") + implementation("org.mini2Dx:gettext-lib:1.11.0") + implementation("org.apache.logging.log4j:log4j-api:2.17.2") + implementation("org.apache.logging.log4j:log4j-core:2.17.2") + implementation("com.sangupta:murmur:1.0.0") + implementation("org.apache.commons:commons-lang3:3.12.0") + implementation("org.apache.commons:commons-text:1.10.0") + implementation("com.formdev:flatlaf:2.3") + implementation("com.formdev:flatlaf-extras:2.3") + implementation("com.github.oshi:oshi-core:6.1.6") + implementation("net.freeutils:jlhttp:2.6") + implementation("joda-time:joda-time:2.10.14") + implementation("org.apache.commons:commons-compress:1.21") + implementation("org.commonmark:commonmark:0.19.0") + implementation("com.github.hypfvieh:dbus-java:3.3.1") + implementation("com.apollographql.apollo:apollo-runtime:2.5.14") + implementation("com.apollographql.apollo:apollo-http-cache:2.5.14") + implementation("com.apollographql.apollo:apollo-coroutines-support:2.5.14") + + // Kotlin + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.6.4") + + testImplementation("junit:junit:4.13.2") + testImplementation("org.mockito:mockito-core:4.6.1") + testImplementation("org.mockito:mockito-inline:4.6.1") + testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2") + testImplementation("org.assertj:assertj-swing-junit:3.17.1") + testImplementation("org.mock-server:mockserver-netty:5.13.2") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2") + testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.8.2") +} + +application { + mainClass.set("com.atlauncher.App") + applicationDefaultJvmArgs = listOf( + "-Djna.nosys=true", + "-Djava.net.preferIPv4Stack=true", + "-Dawt.useSystemAAFontSettings=on", + "-Dswing.aatext=true" + ) +} + +apollo { + customTypeMapping.set( + mapOf( + "ID" to "java.lang.String", + "DateTime" to "java.util.Date" + ) + ) + @Suppress("OPT_IN_USAGE") // It's experimental, and that is fine + packageName.set("com.atlauncher.graphql") +} + +extensions.configure>("gettext") { + create("translations") { + srcDir = "src" + include = "main/java/com/atlauncher/**/*.java" + excludes = arrayOf( + "main/java/com/atlauncher/adapter/**/*.java", + "main/java/com/atlauncher/annot/**/*.java", + "main/java/com/atlauncher/collection/**/*.java", + "main/java/com/atlauncher/evnt/**/*.java", + "main/java/com/atlauncher/exceptions/**/*.java", + "main/java/com/atlauncher/interfaces/**/*.java", + "main/java/com/atlauncher/listener/**/*.java", + "main/java/com/atlauncher/utils/**/*.java" + ) + commentFormat = " #. " + outputFilename = "translations.pot" + } +} + +license { + header(project.file("LICENSEHEADER")) + include("**/*.java") + exclude("io/github/**/*.java") + exclude("net/minecraft/**/*.java") + exclude("com/atlauncher/graphql/**/*.java") + exclude("com/atlauncher/gui/layouts/WrapLayout.java") + newLine.set(false) + properties { + set("year", currentYear()) + } +} + +macAppBundle { + mainClassName = "com.atlauncher.App" + appName = "ATLauncher" + appStyle = "universalJavaApplicationStub" + runtimeConfigurationName = "shadow" + jarTask = "shadowJar" + icon = "src/main/resources/assets/image/icon.icns" + javaProperties["user.dir"] = "\$APP_ROOT/Contents/Java" + javaProperties["apple.laf.useScreenMenuBar"] = "true" + javaExtras["-Djna.nosys"] = "true" + javaExtras["-Djava.net.preferIPv4Stack"] = "true" + javaExtras["-Dawt.useSystemAAFontSettings"] = "on" + javaExtras["-Dswing.aatext"] = "true" + bundleExtras["JVMVersion"] = project.java.targetCompatibility.toString() + "+" +} + +fun currentYear(): String { + val df = SimpleDateFormat("yyyy") + df.timeZone = TimeZone.getTimeZone("UTC") + return df.format(Date()) +} + +launch4j { + outfile = "ATLauncher-${project.version}.exe" + jreMinVersion = project.java.targetCompatibility.toString() + mainClassName = "com.atlauncher.App" + icon = "${projectDir}/src/main/resources/assets/image/icon.ico" + version = "${project.version}" + textVersion = "${project.version}" + copyright = "2013-${currentYear()} ${project.name}" + companyName = project.name + bundledJrePath = "jre/;%JAVA_HOME%;%PATH%" + jvmOptions = setOf( + "-Djna.nosys=true", + "-Djava.net.preferIPv4Stack=true", + "-Dawt.useSystemAAFontSettings=on", + "-Dswing.aatext=true" + ) +} + +fun getCopyPath(newSuffix: String, newLibs: String): File { + val archivePath = project.tasks.jar.get().archiveFile.get().asFile.path + return file(archivePath.replace(".jar", newSuffix).replace("libs", newLibs)) +} + +artifacts { + archives(tasks.shadowJar) + archives(getCopyPath(".exe", "launch4j")) + archives(getCopyPath(".zip", "distributions")) +} + +fun getShouldIgnoreUpdate(version: String): Boolean { + return arrayOf("ALPHA", "BETA", "RC", "-M").any { version.toUpperCase() == (it) } +} + +tasks { + test { + // Use JUnit Platform for unit tests. + useJUnitPlatform() + + testlogger { + setTheme("mocha") + } + if (JavaVersion.current().isJava9Compatible) { + jvmArgs("--add-opens=java.base/sun.security.x509=ALL-UNNAMED") + } + } + + jar { + manifest { + attributes( + "SplashScreen-Image" to "/assets/image/splash-screen.png", + "Implementation-Title" to project.name, + "Implementation-Version" to archiveVersion, + "Implementation-Vender" to "ATLauncher", + "Main-Class" to "com.atlauncher.App", + "Multi-Release" to "true" + ) + } + } + + shadowJar { + archiveClassifier.set(null as String?) // type problem shenanigans + minimize { + exclude(dependency("org.apache.logging.log4j:.*:.*")) + exclude(dependency("com.formdev:.*:.*")) + exclude(dependency("com.github.jnr:.*:.*")) + exclude(dependency("com.github.hypfvieh:.*:.*")) + exclude(dependency("org.apache.commons:commons-compress:.*")) + } + + // these are included by dbus-java which is only used on Linux + exclude("jni/x86_64-Windows/") + exclude("jni/x86_64-SunOS/") + exclude("jni/x86_64-OpenBSD/") + exclude("jni/x86_64-FreeBSD/") + exclude("jni/x86_64-DragonFlyBSD/") + exclude("jni/sparcv9-SunOS/") + exclude("jni/ppc-AIX/") + exclude("jni/ppc64-AIX/") + exclude("jni/i386-Windows/") + exclude("jni/i386-SunOS/") + exclude("jni/Darwin/") + + archiveClassifier.set("") + dependsOn(jar) + } + + copyToResourcesJava { + rename("ATLauncher-${project.version}.jar", "ATLauncher.jar") + } + + val copyArtifactsFinal = create("copyArtifactsFinal") { + doFirst { + println("ATLauncher has been built. Distribution files are located in the dist directory.") + } + } + + val copyArtifacts = create("copyArtifacts") { + dependsOn(build) + from(shadowJar) + from(getCopyPath(".exe", "launch4j")) + from(getCopyPath(".zip", "distributions")) + into("${projectDir}/dist") + finalizedBy(copyArtifactsFinal) + } + + val downloadNewerUniversalJavaApplicationStub = create("downloadNewerUniversalJavaApplicationStub") { + description = "Downloads newer universalJavaApplicationStub" + src("https://raw.githubusercontent.com/tofi86/universalJavaApplicationStub/2dbbf92b35e61194266c985c8bc6b411053a1b4a/src/universalJavaApplicationStub") + dest(file("$buildDir/macApp/${project.name}.app/Contents/MacOS/universalJavaApplicationStub")) + overwrite(true) + } + + register("createTestLauncherDir") { + project.file("testLauncher/dev").mkdirs() + } + + val createMacApp = create("createMacApp") { + dependsOn(named("createApp"), shadowJar) + from("$buildDir/macApp") { + include("${project.name}.app/**") + exclude("${project.name}.app/Contents/MacOS") + } + from("$buildDir/macApp") { + include("${project.name}.app/Contents/MacOS/**") + fileMode = 0x777 + } + archiveFileName.set("${project.name}-${project.version}.zip") + } + + clean { + doFirst { + delete("${projectDir}/dist") + } + } + + dependencyUpdates { + rejectVersionIf { + getShouldIgnoreUpdate(candidate.version) + } + } + + build { + setFinalizedBy(listOf(copyArtifacts)) + dependsOn(createExe, createMacApp) + } + + createApp { + finalizedBy(downloadNewerUniversalJavaApplicationStub) + } +} + +project.afterEvaluate { + tasks.check { + /* + Trick gradle by not "removing" a task + (which throws an unsupported error), + Instead filter current tasks and then set the new list. + */ + setDependsOn( + dependsOn.filterNot { + (it as? Task)?.name == "checkLicenses" + } + ) + } +} \ No newline at end of file diff --git a/legacy-launch/build.gradle b/legacy-launch/build.gradle deleted file mode 100644 index 1728f6c9..00000000 --- a/legacy-launch/build.gradle +++ /dev/null @@ -1,14 +0,0 @@ -plugins { - id 'java' - id 'application' -} - -sourceCompatibility = '1.8' -targetCompatibility = '1.8' - -group = 'com.atlauncher' -version = rootProject.file('src/main/resources/version').text.trim().replace('.Beta', '') - -application { - mainClass = 'com.atlauncher.mclauncher.legacy.LegacyMCLauncher' -} diff --git a/legacy-launch/build.gradle.kts b/legacy-launch/build.gradle.kts new file mode 100644 index 00000000..d0f03413 --- /dev/null +++ b/legacy-launch/build.gradle.kts @@ -0,0 +1,16 @@ +plugins { + java + application +} + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +group = "com.atlauncher" +version = rootProject.file("src/main/resources/version").readText().trim().replace(".Beta", "") + +application { + mainClass.set("com.atlauncher.mclauncher.legacy.LegacyMCLauncher") +} diff --git a/settings.gradle b/settings.gradle.kts similarity index 58% rename from settings.gradle rename to settings.gradle.kts index 5700b227..b3a0f4fa 100644 --- a/settings.gradle +++ b/settings.gradle.kts @@ -4,6 +4,9 @@ * Detailed information about configuring a multi-project build in Gradle can be found * in the user manual at https://docs.gradle.org/7.1.1/userguide/multi_project_builds.html */ -rootProject.name = name -include('app') -include('legacy-launch') +// TODO simplify this +val props = java.util.Properties() +props.load(File("gradle.properties").reader()) +rootProject.name = props["name"] as String +include("app") +include("legacy-launch")