Files
LoveLiveMusicPlayerKMP/settings.gradle.kts
2026-08-11 00:33:28 +08:00

137 lines
4.0 KiB
Kotlin

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")