137 lines
4.0 KiB
Kotlin
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")
|