-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathbuild.gradle.kts
More file actions
104 lines (94 loc) · 3.24 KB
/
build.gradle.kts
File metadata and controls
104 lines (94 loc) · 3.24 KB
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import com.diffplug.gradle.spotless.SpotlessExtension
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.spotless) apply false
alias(libs.plugins.detekt) apply false
alias(libs.plugins.sortDependencies) apply false
alias(libs.plugins.jetbrains.kotlin.jvm) apply false
alias(libs.plugins.mavenPublish) apply false
alias(libs.plugins.dokka)
alias(libs.plugins.kotlin.compose) apply false
alias(libs.plugins.kotlin.multiplatform) apply false
alias(libs.plugins.android.kotlin.multiplatform.library) apply false
alias(libs.plugins.android.lint) apply false
}
val projectLibs = extensions.getByType<VersionCatalogsExtension>().named("libs")
allprojects {
apply(plugin = "com.diffplug.spotless")
configure<SpotlessExtension> {
ratchetFrom("origin/main")
format("misc") {
target("*.md", ".gitignore")
trimTrailingWhitespace()
endWithNewline()
}
kotlin {
target("**/*.kt")
ktfmt().googleStyle()
trimTrailingWhitespace()
endWithNewline()
targetExclude("**/spotless.kt")
}
kotlinGradle {
target("*.kts")
ktfmt().googleStyle()
trimTrailingWhitespace()
endWithNewline()
targetExclude("**/spotless.gradle")
}
}
apply(plugin = "io.gitlab.arturbosch.detekt")
configure<DetektExtension> {
toolVersion = "1.23.8"
allRules = true
buildUponDefaultConfig = true
config.setFrom(files("$rootDir/config/detekt/detekt.yml"))
baseline = file("$rootDir/config/detekt/detekt-baseline.xml")
}
tasks.withType<Detekt>().configureEach {
jvmTarget = projectLibs.findVersion("jvmTarget").get().requiredVersion
}
val detektProjectBaseline by
tasks.registering(DetektCreateBaselineTask::class) {
description = "Overrides current baseline."
buildUponDefaultConfig.set(true)
ignoreFailures.set(true)
parallel.set(true)
setSource(files(rootDir))
config.setFrom(files("$rootDir/config/detekt/detekt.yml"))
baseline.set(file("$rootDir/config/detekt/detekt-baseline.xml"))
include("**/*.kt")
include("**/*.kts")
exclude("**/resources/**")
exclude("**/build/**")
}
}
// Root multi-module Dokka output
dokka { dokkaPublications.html { outputDirectory.set(rootDir.resolve("docs/")) } }
dependencies {
dokka(project(":source:api"))
dokka(project(":source:ui"))
}
subprojects {
plugins.withType<JavaPlugin> {
the<JavaPluginExtension>().toolchain {
languageVersion.set(libs.versions.jdk.map(JavaLanguageVersion::of))
}
}
plugins.withId("com.android.library") {
the<com.android.build.gradle.BaseExtension>().compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}
// Kotlin configuration
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
compilerOptions { jvmTarget.set(libs.versions.jvmTarget.map(JvmTarget::fromTarget)) }
}
}