forked from michal-luszczuk/MakeBillingEasy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.gradle.kts
90 lines (75 loc) · 3 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
89
90
import com.vanniktech.maven.publish.MavenPublishPluginExtension
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
buildscript {
repositories {
google()
}
dependencies {
classpath("com.android.tools.build:gradle:7.3.1")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlinVersion}")
classpath("org.jetbrains.dokka:dokka-gradle-plugin:${Versions.dokka}")
classpath("com.vanniktech:gradle-maven-publish-plugin:0.18.0")
classpath("de.mannodermaus.gradle.plugins:android-junit5:1.8.2.1")
classpath("com.google.dagger:hilt-android-gradle-plugin:${Versions.dagger}")
}
}
plugins {
id("com.github.ben-manes.versions") version "0.44.0"
}
allprojects {
repositories {
google()
mavenCentral()
}
}
tasks.named<com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask>("dependencyUpdates")
.configure {
rejectVersionIf {
isNonStable(candidate.version) && !isNonStable(currentVersion)
}
}
fun isNonStable(version: String): Boolean {
val stableKeyword = listOf("RELEASE", "FINAL", "GA").any { version.toUpperCase().contains(it) }
val regex = "^[0-9,.v-]+(-r)?$".toRegex()
val isStable = stableKeyword || regex.matches(version)
return isStable.not()
}
subprojects {
apply(plugin = "kotlin-android")
val kotlin = project.extensions.getByName("kotlin") as KotlinAndroidProjectExtension
kotlin.sourceSets.all {
languageSettings {
languageVersion = "1.6"
progressiveMode = true
}
}
pluginManager.withPlugin("com.android.library") {
apply(plugin = "org.jetbrains.dokka")
tasks.withType<org.jetbrains.dokka.gradle.DokkaTask>().configureEach {
outputDirectory.set(buildDir.resolve("javadoc"))
}
apply(plugin = "com.vanniktech.maven.publish")
(project.extensions.getByName("mavenPublish") as MavenPublishPluginExtension).apply {
sonatypeHost = com.vanniktech.maven.publish.SonatypeHost.S01
}
}
plugins.withType(com.android.build.gradle.LibraryPlugin::class) {
apply(plugin = "de.mannodermaus.android-junit5")
androidLibrary {
dependencies {
"testImplementation"(Libs.mockk)
"testImplementation"("org.junit.jupiter:junit-jupiter-api:5.9.1")
"testRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine:5.9.1")
"testImplementation"("app.cash.turbine:turbine:0.12.1")
"testImplementation"(Libs.coroutinesTest)
"testImplementation"("junit:junit:4.13.2")
"testRuntimeOnly"("org.junit.vintage:junit-vintage-engine:5.9.1")
}
}
}
}
tasks.register("clean", Delete::class) {
delete(rootProject.buildDir)
}
fun Project.androidLibrary(configure: com.android.build.gradle.LibraryExtension.() -> Unit) =
extensions.configure(com.android.build.gradle.LibraryExtension::class, configure)