-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathbuild.gradle.kts
88 lines (78 loc) · 2.64 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import com.android.build.gradle.AppExtension
import com.android.build.gradle.AppPlugin
import com.android.build.gradle.LibraryExtension
import com.android.build.gradle.LibraryPlugin
plugins {
id("com.android.application") version Version.androidGradlePlugin apply false
kotlin("android") version Version.kotlin apply false
}
allprojects {
repositories {
maven(url = "https://dl.bintray.com/kotlin/kotlin-eap/")
maven(url = "https://jitpack.io")
jcenter()
google()
}
}
subprojects {
// Accessing the `PluginContainer` in order to use `whenPluginAdded` function
project.plugins.configure(project = project)
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
freeCompilerArgs = listOf(
"-Xallow-jvm-ir-dependencies",
"-Xskip-prerelease-check",
"-Xskip-metadata-version-check",
"-Xopt-in=kotlin.RequiresOptIn"
)
}
}
configurations.all {
resolutionStrategy {
force(
"org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7",
"org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7"
)
}
}
}
// Extension function on `PluginContainer`
fun PluginContainer.configure(project: Project) {
whenPluginAdded {
when (this) {
is AppPlugin -> project.extensions
.getByType<AppExtension>()
.apply { applyCommons() }
is LibraryPlugin -> project.extensions
.getByType<LibraryExtension>()
.apply { applyCommons() }
}
}
}
// Extension function on `AppExtension`
fun AppExtension.applyCommons() {
compileSdkVersion(AndroidConfig.compileSdk)
defaultConfig.apply {
minSdkVersion(AndroidConfig.minSdk)
targetSdkVersion(AndroidConfig.targetSdk)
versionCode = properties.getOrDefault("tracktor.versioncode", 1).toString().toInt()
versionName = AndroidConfig.versionName
}
compileOptions.apply {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}
// Extension function on `LibraryExtension`
fun LibraryExtension.applyCommons() {
compileSdkVersion(AndroidConfig.compileSdk)
defaultConfig.apply {
minSdkVersion(AndroidConfig.minSdk)
targetSdkVersion(AndroidConfig.targetSdk)
}
compileOptions.apply {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
}