mirai/mirai-core/build.gradle.kts
2019-11-17 12:52:48 +08:00

181 lines
5.4 KiB
Plaintext

@file:Suppress("UNUSED_VARIABLE")
import com.android.build.gradle.api.AndroidSourceSet
plugins {
id("kotlinx-atomicfu")
kotlin("multiplatform")
id("com.android.library")
id("kotlinx-serialization")
`maven-publish`
}
group = "net.mamoe.mirai"
version = "0.1.0"
description = "Mirai core"
val kotlinVersion: String by rootProject.ext
val atomicFuVersion: String by rootProject.ext
val coroutinesVersion: String by rootProject.ext
val kotlinXIoVersion: String by rootProject.ext
val coroutinesIoVersion: String by rootProject.ext
val klockVersion: String by rootProject.ext
val ktorVersion: String by rootProject.ext
val serializationVersion: String by rootProject.ext
fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.kotlinx(id: String, version: String) {
implementation("org.jetbrains.kotlinx:$id:$version")
}
fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.ktor(id: String, version: String) {
implementation("io.ktor:$id:$version")
}
kotlin {
android("android") {
project.plugins.apply("com.android.library")
//publishLibraryVariants("release", "debug")
project.android {
compileSdkVersion(29)
buildToolsVersion("29.0.2")
defaultConfig {
minSdkVersion(15)
targetSdkVersion(29)
versionCode = 1
versionName = "1.0"
// testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
// proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
}
}
sourceSets.filterIsInstance(com.android.build.gradle.api.AndroidSourceSet::class.java).forEach {
it.manifest.srcFile("src/androidMain/res/AndroidManifest.xml")
it.res.srcDirs(file("src/androidMain/res"))
}
(sourceSets["main"] as AndroidSourceSet).java.srcDirs(file("src/androidMain/kotlin"))
}
}
jvm("jvm") {
// withJava()
}
/*
val proto = sourceSets["proto"].apply {
}*/
val commonMain = sourceSets["commonMain"].apply {
dependencies {
kotlin("kotlin-reflect", kotlinVersion)
//kotlin("kotlin-serialization", kotlinVersion)
kotlinx("kotlinx-coroutines-core-common", coroutinesVersion)
kotlinx("kotlinx-serialization-runtime-common", serializationVersion)
api("com.soywiz.korlibs.klock:klock:$klockVersion")
ktor("ktor-http-cio", ktorVersion)
ktor("ktor-http", ktorVersion)
ktor("ktor-client-core-jvm", ktorVersion)
ktor("ktor-client-cio", ktorVersion)
ktor("ktor-client-core", ktorVersion)
ktor("ktor-network", ktorVersion)
//implementation("io.ktor:ktor-io:1.3.0-beta-1")
}
}
sourceSets["androidMain"].apply {
dependencies {
dependsOn(commonMain)
kotlin("kotlin-reflect", kotlinVersion)
kotlinx("kotlinx-serialization-runtime", serializationVersion)
kotlinx("kotlinx-coroutines-android", coroutinesVersion)
ktor("ktor-client-android", ktorVersion)
}
}
sourceSets["jvmMain"].apply {
dependencies {
dependsOn(commonMain)
kotlin("kotlin-stdlib-jdk8", kotlinVersion)
kotlin("kotlin-stdlib-jdk7", kotlinVersion)
kotlin("kotlin-reflect", kotlinVersion)
ktor("ktor-client-core-jvm", ktorVersion)
kotlinx("kotlinx-io-jvm", kotlinXIoVersion)
kotlinx("kotlinx-serialization-runtime", serializationVersion)
}
}
sourceSets["jvmTest"].apply {
dependencies {
}
kotlin.outputDir = file("build/classes/kotlin/jvm/test")
kotlin.setSrcDirs(listOf("src/$name/kotlin"))
}
sourceSets.all {
languageSettings.enableLanguageFeature("InlineClasses")
languageSettings.useExperimentalAnnotation("kotlin.Experimental")
dependencies {
kotlin("kotlin-stdlib", kotlinVersion)
kotlin("kotlin-serialization", kotlinVersion)
kotlinx("atomicfu", atomicFuVersion)
kotlinx("kotlinx-io", kotlinXIoVersion)
kotlinx("kotlinx-coroutines-io", coroutinesIoVersion)
kotlinx("kotlinx-coroutines-core", coroutinesVersion)
}
}
sourceSets {
getByName("commonMain") {
dependencies {
implementation(kotlin("reflect"))
}
}
}
}
/*
publishing {
publications.withType<MavenPublication>().apply {
val jvm by getting {}
val metadata by getting { }
}
}*/
/*
publishing {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/mamoe/mirai")
credentials {
val local = loadProperties("local.properties")
username = local["miraiCorePublicationUsername"]?.toString()?:error("Cannot find miraiCorePublicationUsername")
password = local["miraiCorePublicationKey"].toString()?:error("Cannot find miraiCorePublicationKey")
}
}
}
}
fun loadProperties(filename: String): Properties = Properties().apply { load(DataInputStream(rootProject.file(filename).inputStream())) }
*/