import java.net.HttpURLConnection import java.net.URI rootProject.name = "LoveLiveMusicPlayerKMP" enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") val nexusBaseUrl = "http://192.168.123.100:18081" fun probeNexus(baseUrl: String): Boolean = try { val conn = URI.create("$baseUrl/service/rest/v1/status").toURL() .openConnection() as HttpURLConnection conn.connectTimeout = 2000 conn.readTimeout = 2000 conn.requestMethod = "GET" conn.instanceFollowRedirects = true val code = conn.responseCode conn.inputStream?.close() conn.disconnect() code in 200 until 400 } catch (_: Throwable) { false } val forcedNexus = startParameter.projectProperties["useNexus"] val useNexusRepos = when { forcedNexus != null -> forcedNexus.toBoolean() else -> probeNexus(nexusBaseUrl) } gradle.extra["useNexusRepos"] = useNexusRepos gradle.extra["nexusBaseUrl"] = nexusBaseUrl logger.lifecycle( if (useNexusRepos) { "[repos] Nexus reachable — prefer $nexusBaseUrl, public repos as fallback" } else { "[repos] Nexus unreachable, using public repositories only" }, ) /** * Prefer local Nexus (fast) then fall back to public mirrors so missing * proxy artifacts (e.g. AGP) still resolve. */ fun RepositoryHandler.addLlmpRepositories(includeGradlePortal: Boolean) { if (useNexusRepos) { maven { url = uri("$nexusBaseUrl/repository/maven-public/") isAllowInsecureProtocol = true } maven { url = uri("$nexusBaseUrl/repository/google/") isAllowInsecureProtocol = true } maven { url = uri("$nexusBaseUrl/repository/mob/") isAllowInsecureProtocol = true } if (includeGradlePortal) { maven { url = uri("$nexusBaseUrl/repository/gradle/") isAllowInsecureProtocol = true } } maven { url = uri("$nexusBaseUrl/repository/jitpack/") isAllowInsecureProtocol = true } } google() mavenCentral() if (includeGradlePortal) gradlePluginPortal() maven { url = uri("https://mvn.mob.com/android") } maven { url = uri("https://jitpack.io") } } pluginManagement { val base = "http://192.168.123.100:18081" val forced = settings.startParameter.projectProperties["useNexus"] val useNexus = when { forced != null -> forced.toBoolean() else -> try { val conn = java.net.URI.create("$base/service/rest/v1/status").toURL() .openConnection() as java.net.HttpURLConnection conn.connectTimeout = 2000 conn.readTimeout = 2000 conn.requestMethod = "GET" val code = conn.responseCode conn.inputStream?.close() conn.disconnect() code in 200 until 400 } catch (_: Throwable) { false } } repositories { if (useNexus) { maven { url = uri("$base/repository/maven-public/") isAllowInsecureProtocol = true } maven { url = uri("$base/repository/google/") isAllowInsecureProtocol = true } maven { url = uri("$base/repository/mob/") isAllowInsecureProtocol = true } maven { url = uri("$base/repository/gradle/") isAllowInsecureProtocol = true } maven { url = uri("$base/repository/jitpack/") isAllowInsecureProtocol = true } } google() mavenCentral() gradlePluginPortal() maven { url = uri("https://mvn.mob.com/android") } maven { url = uri("https://jitpack.io") } } } dependencyResolutionManagement { repositories { addLlmpRepositories(includeGradlePortal = false) } } include(":shared") include(":composeApp") include(":androidApp")