import java.io.FileOutputStream import de.undercouch.gradle.tasks.download.Download plugins { java application `maven-publish` id("com.github.johnrengelman.shadow") version "7.1.2" id("de.undercouch.download") version "5.1.0" } application { mainClass.set("io.gitlab.jfronny.inceptum.WrapperStrap") } repositories { mavenCentral() maven { setUrl("https://gitlab.com/api/v4/projects/35745143/packages/maven") } } dependencies { implementation(project(":common")) } abstract class FileOutput : DefaultTask() { @get:OutputFile abstract var output: File } val bootstrapVersion = "0.2.1" val bootstrapArch = "i686" val downloadBootstrap by tasks.registering(Download::class) { src("https://maven.fabricmc.net/net/fabricmc/fabric-installer-native-bootstrap/windows-${bootstrapArch}/${bootstrapVersion}/windows-${bootstrapArch}-${bootstrapVersion}.exe") dest(project.buildDir) } val nativeExe by tasks.registering(FileOutput::class) { dependsOn(downloadBootstrap) dependsOn(tasks.shadowJar) output = file("$buildDir/libs/${project.name}-${project.version}.exe") outputs.upToDateWhen { false } doFirst { output.delete() } doLast { output.createNewFile() FileOutputStream(output).use { w -> w.write(downloadBootstrap.get().outputFiles.first().readBytes()) w.write(tasks.shadowJar.get().archiveFile.get().asFile.readBytes()) } } } if (rootProject.extra["flavor"] == "windows") { tasks.build.get().dependsOn(nativeExe) } publishing { publications { create("mavenJava") { artifact(tasks.shadowJar) { builtBy(tasks.shadowJar) } } } if (rootProject.extra["isPublic"] == true) { repositories.maven { url = uri("https://gitlab.com/api/v4/projects/30862253/packages/maven") name = "gitlab" credentials(HttpHeaderCredentials::class) { name = "Job-Token" value = System.getenv()["CI_JOB_TOKEN"] } authentication { create("header") } } } repositories.mavenLocal() }