// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.buildConfig = [ 'compileSdk': 30, 'minSdk' : 24, 'targetSdk' : 30, 'version': [ 'major': 1, 'minor': 0, 'patch': 0, 'build': "alpha", ], ] ext.buildConfig.version['name'] = "${buildConfig.version.major}.${buildConfig.version.minor}.${buildConfig.version.patch}" ext.buildConfig.version['fullName'] = "${buildConfig.version.name}.${buildConfig.version.build}" def buildNumber if(buildConfig.version.build == 'alpha') { buildNumber = -2 } else if (buildConfig.version.build == 'beta') { buildNumber = -1 } else { buildNumber = 0 } ext.buildConfig.version['code'] = buildConfig.version.major * 1000000 + buildConfig.version.minor * 10000 + buildConfig.version.patch * 100 + buildNumber apply from: rootProject.file('dependencies.gradle') repositories { google() mavenCentral() jcenter() } dependencies { classpath Libs.androidGradlePlugin classpath Libs.Kotlin.gradlePlugin // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } plugins { id 'com.diffplug.spotless' version '5.12.4' id 'com.github.ben-manes.versions' version '0.38.0' } allprojects { repositories { google() mavenCentral() jcenter() } } subprojects { apply plugin: 'com.diffplug.spotless' spotless { kotlin { target '**/*.kt' targetExclude("$buildDir/**/*.kt") targetExclude('bin/**/*.kt') ktlint(Versions.ktlint) licenseHeaderFile rootProject.file('spotless/copyright.kt') } format 'misc', { // define the files to apply `misc` to target '*.gradle', '*.md', '.gitignore' // define the steps to apply to those files trimTrailingWhitespace() indentWithTabs() // or spaces. Takes an integer argument if you don't like 4 endWithNewline() } } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { // Treat all Kotlin warnings as errors allWarningsAsErrors = true // Set JVM target to 1.8 jvmTarget = "1.8" } } } /** * Update dependencyUpdates task to reject versions which are more 'unstable' than our * current version. */ tasks.named("dependencyUpdates").configure { rejectVersionIf { def current = DependencyUpdates.versionToRelease(it.currentVersion) // If we're using a SNAPSHOT, ignore since we must be doing so for a reason. if (current == ReleaseType.SNAPSHOT) return true // Otherwise we reject if the candidate is more 'unstable' than our version def candidate = DependencyUpdates.versionToRelease(it.candidate.version) return candidate.isLessStableThan(current) } } Object propOrDef(String propertyName, Object defaultValue) { def propertyValue = project.properties[propertyName] return propertyValue != null ? propertyValue : defaultValue } apply from: file('gradle/dependencyGraph.gradle')