11buildscript {
2- ext. kotlinVersion = " 2.2.20"
2+ // Kotlin version managed via version catalog
3+ ext. kotlinVersion = libs. versions. kotlin. plugin. get()
34
45 repositories {
56 google()
67 mavenCentral()
78 }
89
910 dependencies {
10- classpath(" com.android.tools.build:gradle:8.13.0 " )
11- classpath(" org.jetbrains.kotlin:kotlin-gradle-plugin:$k otlinVersion " )
12- classpath(" de.mannodermaus.gradle.plugins:android-junit5:1.13.4.0 " )
13- classpath(" com.adarshr:gradle-test-logger-plugin:4.0.0 " )
14- classpath(" info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.15.0 " )
11+ classpath(" com.android.tools.build:gradle:${ libs.versions.android.gradle.get() } " )
12+ classpath(" org.jetbrains.kotlin:kotlin-gradle-plugin:${ libs.versions.kotlin.plugin.get() } " )
13+ classpath(" de.mannodermaus.gradle.plugins:android-junit5:${ libs.versions.android.junit5.plugin.get() } " )
14+ classpath(" com.adarshr:gradle-test-logger-plugin:${ libs.versions.test.logger.plugin.get() } " )
15+ classpath(" info.solidsoft.gradle.pitest:gradle-pitest-plugin:${ libs.versions.gradle.pitest.plugin.get() } " )
1516 }
1617}
1718
1819plugins {
19- id(" com.github.ben-manes.versions" ) version " 0.52.0"
20- id(" io.spring.dependency-management" ) version " 1.1.7"
20+ alias(libs. plugins. ben. manes. versions)
21+ }
22+
23+ def suppliedVersion = project. findProperty(" versionName" ) ?: project. findProperty(" version" )
24+ if (! suppliedVersion) {
25+ throw new GradleException (" Missing required project property: versionName (or version). Pass with -PversionName=1.2.3" )
2126}
2227
2328allprojects {
24- apply from : " $rootDir /.ops/git.gradle"
25- // Use git-based versioning for all modules
26- version = git. versionName()
29+ // Use parameter-based versioning for all modules
30+ version = suppliedVersion
2731}
2832
2933subprojects {
@@ -32,7 +36,6 @@ subprojects {
3236 mavenCentral()
3337 }
3438
35- project. apply from : " $rootDir /dependencies.gradle"
3639
3740 afterEvaluate { project ->
3841 tasks. withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile ). all {
@@ -72,8 +75,8 @@ subprojects {
7275 defaultConfig {
7376 targetSdkVersion(36 )
7477
75- versionName = git . versionName()
76- versionCode = git . commitCount()
78+ versionName = suppliedVersion
79+ versionCode = (project . findProperty( " versionCode " ) ?: 1 ) as int
7780
7881 testInstrumentationRunner = " androidx.test.runner.AndroidJUnitRunner"
7982 }
@@ -105,4 +108,31 @@ subprojects {
105108 }
106109}
107110
108- println (" Version ${ git.versionName()} " )
111+ println (" Version ${ project.version} " )
112+
113+ allprojects { project ->
114+ project. configurations. all {
115+ resolutionStrategy {
116+ eachDependency { dependency ->
117+ if (dependency. requested. name in [" kotlin-stdlib" , " kotlin-stdlib-jdk7" , " kotlin-stdlib-jdk8" , " kotlin-reflect" ]) {
118+ dependency. useVersion(kotlinVersion)
119+ }
120+ }
121+ // Ensure consistent resolution of androidx.annotation across configurations
122+ force " androidx.annotation:annotation:${ libs.versions.androidx.annotation.get()} "
123+ }
124+ }
125+ }
126+
127+ rootProject. dependencyUpdates. resolutionStrategy {
128+ componentSelection { rules ->
129+ rules. all { ComponentSelection selection ->
130+ boolean rejected = [' alpha' , ' beta' , ' rc' , ' cr' , ' m' , ' preview' ]. any { qualifier ->
131+ selection. candidate. version ==~ / (?i).*[.-]${qualifier}[.\d -]*/
132+ }
133+ if (rejected) {
134+ selection. reject(' Release candidate' )
135+ }
136+ }
137+ }
138+ }
0 commit comments