Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gradle, use material3 in a Compose Multiplatform project

I'm doing a project with Jetpack Compose and Compose Multiplatform Desktop. I'm not very familiar with Gradle, and I would like to use Material 3 in my project. So, I added this line in build.gradle.kts file:

implementation("androidx.compose.material3:material3:1.0.0-alpha14")

But when I try to import the lib in a Kotlin file with:

import androidx.compose.material3.*

I've got an unresolved reference issue.

This is my build.gradle.kts file:

import org.jetbrains.compose.desktop.application.dsl.TargetFormat

plugins {
    kotlin("multiplatform")
    id("org.jetbrains.compose")
}

group = "com.example"
version = "1.0-SNAPSHOT"

repositories {
    google()
    mavenCentral()
    maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
}

kotlin {
    jvm {
        compilations.all {
            kotlinOptions {
                jvmTarget = "18"
                freeCompilerArgs = listOf("-opt-in=kotlin.RequiresOptIn")
            }
        }
        withJava()
    }
    sourceSets {
        val jvmMain by getting {
            dependencies {
                implementation(compose.desktop.currentOs)
                implementation("androidx.compose.material3:material3:1.0.0-alpha14")
            }
        }
        val jvmTest by getting
    }
}

compose.desktop {
    application {
        mainClass = "MainKt"
        jvmArgs += listOf("-Djava.library.path=./lib")
        nativeDistributions {
            targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
            packageName = "FanControl"
            packageVersion = "1.0.0"
        }
    }
}

I think I should be able to use this lib since the release note indicate it support it.

Edit1: I have this message from Gradle when I try to sync:

Could not resolve: androidx.compose.material3:material3:1.0.0-alpha14
like image 262
wiiznokes3 Avatar asked Jan 01 '26 06:01

wiiznokes3


2 Answers

Finally found what was the problem, it was the wrong library, change

implementation("androidx.compose.material3:material3:1.0.0-alpha14")

with

implementation("org.jetbrains.compose.material3:material3-desktop:1.2.1")
like image 164
wiiznokes3 Avatar answered Jan 03 '26 14:01

wiiznokes3


As Sean said and also stated in official docs, you can use the shortcuts provided by CMP plugin:

kotlin {
    sourceSets {
        commonMain.dependencies {
            implementation(compose.material3)
// ...

This way, your project will automatically use androidx.compose.material3:material3:x.y.z for Android target and org.jetbrains.compose.material3:material3:a.b.c for other targets.

like image 21
Mahozad Avatar answered Jan 03 '26 12:01

Mahozad



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!