import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "6.0.0" } val properties = ComposeUberJarProperties() repositories { mavenCentral() jcenter() maven(properties.composeRepoUrl) } val composeVersion: String by lazy { (properties.composeVersionFile?.let { project.file(it).readText().trim() } ?: properties.composeVersion!!).also { project.logger.quiet("Compose version: '$it'") } } dependencies { implementation("org.jetbrains.compose.desktop:desktop-jvm-linux-x64:$composeVersion") } val shadowJar = tasks.named("shadowJar", ShadowJar::class) { dependencies { include { it.moduleGroup.startsWith("org.jetbrains.compose") } } archiveFileName.set("compose-full.jar") } tasks.register("publishToComposeRepo") { dependsOn(tasks.named("publishAllPublicationsToComposeRepoRepository")) } publishing { publications { create("maven") { groupId = "org.jetbrains.compose" artifactId = "compose-full" version = composeVersion artifacts.artifact(shadowJar.map { it.archiveFile.get() }) } } repositories { maven(properties.composeRepoUrl) { name = "ComposeRepo" authentication { credentials { username = properties.composeRepoUserName password = properties.composeRepoKey } } } } } class ComposeUberJarProperties { val composeVersion: String? get() = typedProperty(COMPOSE_VERSION_PROPERTY) val composeVersionFile: String? get() = typedProperty(COMPOSE_VERSION_FILE_PROPERTY) val composeRepoUrl: String get() = System.getenv("COMPOSE_REPO_URL") ?: "https://maven.pkg.jetbrains.space/public/p/compose/dev" val composeRepoUserName: String? get() = System.getenv("COMPOSE_REPO_USERNAME") val composeRepoKey: String? get() = System.getenv("COMPOSE_REPO_KEY") companion object { const val COMPOSE_VERSION_PROPERTY = "compose.version" const val COMPOSE_VERSION_FILE_PROPERTY = "compose.version.file" inline fun Project.typedProperty(name: String): T? = project.findProperty(name) as? T } }