You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

86 lines
2.4 KiB

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()
maven(properties.composeRepoUrl)
google()
}
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-macos-x64:$composeVersion")
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<MavenPublication>("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<String>(COMPOSE_VERSION_PROPERTY)
val composeVersionFile: String?
get() = typedProperty<String>(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 <reified T> Project.typedProperty(name: String): T? =
project.findProperty(name) as? T
}
}