Skip to content

Commit 912a40e

Browse files
Start using the refreshVersions Gradle plugin to manage dependencies.
https://github.com/jmfayard/refreshVersions This change migrates dependency versions to the versions.properties file, which will be resolved into actual dependency strings by the plugin. New versions can be checked for by running `./gradlew refreshVersions`. Note that **this commit does not change any version numbers**, it simply moves them to be defined in a different location. It also deletes some stale dependency definitions that weren't actually used.
1 parent 32870bd commit 912a40e

File tree

5 files changed

+125
-61
lines changed

5 files changed

+125
-61
lines changed

build.gradle.kts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,21 @@ subprojects {
5656
tasks.findByName("check")
5757
?.dependsOn("detekt")
5858

59+
// Can't use the normal placeholder syntax to reference the reflect version, since that
60+
// placeholder seems to only be evaluated if the module has a direct dependency on the library.
61+
val kotlinReflectVersion = File(rootDir, "versions.properties")
62+
.useLines { it.first { line -> "kotlin-reflect" in line } }
63+
.split("=")
64+
.last()
65+
5966
configurations.configureEach {
6067
// There could be transitive dependencies in tests with a lower version. This could cause
6168
// problems with a newer Kotlin version that we use.
62-
resolutionStrategy.force(Dependencies.Kotlin.reflect)
69+
resolutionStrategy.force("org.jetbrains.kotlin:kotlin-reflect:$kotlinReflectVersion")
6370
}
6471
}
6572

66-
tasks.withType<KotlinCompile>() {
73+
tasks.withType<KotlinCompile> {
6774
kotlinOptions {
6875
// Allow warnings when running from IDE, makes it easier to experiment.
6976
if (!isRunningFromIde) {

buildSrc/src/main/java/Dependencies.kt

Lines changed: 52 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -4,52 +4,49 @@ import java.util.Locale.US
44
import kotlin.reflect.full.declaredMembers
55

66
object Versions {
7-
const val coroutines = "1.3.7"
8-
const val kotlin = "1.3.72"
97
const val targetSdk = 29
108
}
119

1210
@Suppress("unused")
1311
object Dependencies {
14-
const val android_gradle_plugin = "com.android.tools.build:gradle:4.0.0"
12+
const val android_gradle_plugin = "com.android.tools.build:gradle:_"
1513

1614
object AndroidX {
17-
const val activity = "androidx.activity:activity:1.1.0"
18-
const val annotations = "androidx.annotation:annotation:1.1.0"
19-
const val appcompat = "androidx.appcompat:appcompat:1.1.0"
20-
const val constraint_layout = "androidx.constraintlayout:constraintlayout:1.1.3"
21-
const val fragment = "androidx.fragment:fragment:1.2.3"
22-
const val gridlayout = "androidx.gridlayout:gridlayout:1.0.0"
15+
const val activity = "androidx.activity:activity:_"
16+
const val appcompat = "androidx.appcompat:appcompat:_"
17+
const val constraint_layout = "androidx.constraintlayout:constraintlayout:_"
18+
const val fragment = "androidx.fragment:fragment:_"
19+
const val gridlayout = "androidx.gridlayout:gridlayout:_"
2320

2421
object Lifecycle {
25-
const val ktx = "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
26-
const val reactivestreams = "androidx.lifecycle:lifecycle-reactivestreams-ktx:2.2.0"
22+
const val ktx = "androidx.lifecycle:lifecycle-runtime-ktx:_"
2723
}
2824

2925
// Note that we're not using the actual androidx material dep yet, it's still alpha.
30-
const val material = "com.google.android.material:material:1.1.0"
31-
const val recyclerview = "androidx.recyclerview:recyclerview:1.1.0"
26+
const val material = "com.google.android.material:material:_"
27+
const val recyclerview = "androidx.recyclerview:recyclerview:_"
3228

3329
// Note that we are *not* using lifecycle-viewmodel-savedstate, which at this
3430
// writing is still in beta and still fixing bad bugs. Probably we'll never bother to,
3531
// it doesn't really add value for us.
36-
const val savedstate = "androidx.savedstate:savedstate:1.0.0"
37-
const val transition = "androidx.transition:transition:1.3.1"
38-
const val viewbinding = "androidx.databinding:viewbinding:3.6.2"
32+
const val savedstate = "androidx.savedstate:savedstate:_"
33+
const val transition = "androidx.transition:transition:_"
34+
const val viewbinding = "androidx.databinding:viewbinding:_"
3935
}
4036

41-
const val cycler = "com.squareup.cycler:cycler:0.1.3"
37+
const val cycler = "com.squareup.cycler:cycler:_"
4238

4339
// Required for Dungeon Crawler sample.
44-
const val desugar_jdk_libs = "com.android.tools:desugar_jdk_libs:1.0.5"
45-
const val moshi = "com.squareup.moshi:moshi:1.9.2"
46-
const val rxandroid2 = "io.reactivex.rxjava2:rxandroid:2.1.1"
47-
const val timber = "com.jakewharton.timber:timber:4.7.1"
40+
const val desugar_jdk_libs = "com.android.tools:desugar_jdk_libs:_"
41+
const val moshi = "com.squareup.moshi:moshi:_"
42+
const val rxandroid2 = "io.reactivex.rxjava2:rxandroid:_"
43+
const val seismic = "com.squareup:seismic:_"
44+
const val timber = "com.jakewharton.timber:timber:_"
4845

4946
object Kotlin {
5047
const val binaryCompatibilityValidatorPlugin =
51-
"org.jetbrains.kotlinx:binary-compatibility-validator:0.2.3"
52-
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
48+
"org.jetbrains.kotlinx:binary-compatibility-validator:_"
49+
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:_"
5350

5451
object Stdlib {
5552
const val common = "org.jetbrains.kotlin:kotlin-stdlib-common"
@@ -59,74 +56,71 @@ object Dependencies {
5956
}
6057

6158
object Coroutines {
62-
const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}"
63-
const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}"
64-
const val rx2 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:${Versions.coroutines}"
59+
const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:_"
60+
const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:_"
61+
const val rx2 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:_"
6562

66-
const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.coroutines}"
63+
const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:_"
6764
}
6865

69-
const val moshi = "com.squareup.moshi:moshi-kotlin:1.9.2"
70-
const val reflect = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}"
66+
const val moshi = "com.squareup.moshi:moshi-kotlin:_"
67+
const val reflect = "org.jetbrains.kotlin:kotlin-reflect:_"
7168

7269
object Serialization {
73-
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-serialization:${Versions.kotlin}"
74-
const val runtime = "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0"
75-
const val kaml = "com.charleskorn.kaml:kaml:0.16.1"
70+
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-serialization:_"
71+
const val runtime = "org.jetbrains.kotlinx:kotlinx-serialization-runtime:_"
72+
const val kaml = "com.charleskorn.kaml:kaml:_"
7673
}
7774

7875
object Test {
7976
const val common = "org.jetbrains.kotlin:kotlin-test-common"
8077
const val annotations = "org.jetbrains.kotlin:kotlin-test-annotations-common"
8178
const val jdk = "org.jetbrains.kotlin:kotlin-test-junit"
8279

83-
const val mockito = "com.nhaarman:mockito-kotlin-kt1.1:1.6.0"
80+
const val mockito = "com.nhaarman:mockito-kotlin-kt1.1:_"
8481
}
8582
}
8683

87-
const val dokka = "org.jetbrains.dokka:dokka-gradle-plugin:0.10.0"
84+
const val dokka = "org.jetbrains.dokka:dokka-gradle-plugin:_"
8885

8986
object Jmh {
90-
const val gradlePlugin = "me.champeau.gradle:jmh-gradle-plugin:0.5.0"
91-
const val core = "org.openjdk.jmh:jmh-core:1.23"
92-
const val generator = "org.openjdk.jmh:jmh-generator-annprocess:1.23"
87+
const val gradlePlugin = "me.champeau.gradle:jmh-gradle-plugin:_"
88+
const val core = "org.openjdk.jmh:jmh-core:_"
89+
const val generator = "org.openjdk.jmh:jmh-generator-annprocess:_"
9390
}
9491

95-
const val mavenPublish = "com.vanniktech:gradle-maven-publish-plugin:0.11.1"
96-
const val ktlint = "org.jlleitschuh.gradle:ktlint-gradle:9.2.0"
97-
const val lanterna = "com.googlecode.lanterna:lanterna:3.0.2"
98-
const val detekt = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.1"
99-
const val okio = "com.squareup.okio:okio:2.5.0"
92+
const val mavenPublish = "com.vanniktech:gradle-maven-publish-plugin:_"
93+
const val ktlint = "org.jlleitschuh.gradle:ktlint-gradle:_"
94+
const val lanterna = "com.googlecode.lanterna:lanterna:_"
95+
const val detekt = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:_"
96+
const val okio = "com.squareup.okio:okio:_"
10097

10198
object RxJava2 {
102-
const val rxjava2 = "io.reactivex.rxjava2:rxjava:2.2.19"
103-
104-
const val extensions = "com.github.akarnokd:rxjava2-extensions:0.20.10"
99+
const val rxjava2 = "io.reactivex.rxjava2:rxjava:_"
105100
}
106101

107102
object Annotations {
108-
const val intellij = "org.jetbrains:annotations:19.0.0"
103+
const val intellij = "org.jetbrains:annotations:_"
109104
}
110105

111106
object Test {
112107
object AndroidX {
113108
object Espresso {
114-
const val contrib = "androidx.test.espresso:espresso-contrib:3.2.0"
115-
const val core = "androidx.test.espresso:espresso-core:3.2.0"
116-
const val idlingResource = "androidx.test.espresso:espresso-idling-resource:3.2.0"
117-
const val intents = "androidx.test.espresso:espresso-intents:3.2.0"
109+
const val core = "androidx.test.espresso:espresso-core:_"
110+
const val idlingResource = "androidx.test.espresso:espresso-idling-resource:_"
111+
const val intents = "androidx.test.espresso:espresso-intents:_"
118112
}
119113

120-
const val junitExt = "androidx.test.ext:junit:1.1.1"
121-
const val runner = "androidx.test:runner:1.2.0"
122-
const val truthExt = "androidx.test.ext:truth:1.2.0"
123-
const val uiautomator = "androidx.test.uiautomator:uiautomator:2.2.0"
114+
const val junitExt = "androidx.test.ext:junit:_"
115+
const val runner = "androidx.test:runner:_"
116+
const val truthExt = "androidx.test.ext:truth:_"
117+
const val uiautomator = "androidx.test.uiautomator:uiautomator:_"
124118
}
125119

126-
const val hamcrestCore = "org.hamcrest:hamcrest-core:2.2"
127-
const val junit = "junit:junit:4.13"
128-
const val mockito = "org.mockito:mockito-core:3.3.3"
129-
const val truth = "com.google.truth:truth:1.0.1"
120+
const val hamcrestCore = "org.hamcrest:hamcrest-core:_"
121+
const val junit = "junit:junit:_"
122+
const val mockito = "org.mockito:mockito-core:_"
123+
const val truth = "com.google.truth:truth:_"
130124
}
131125
}
132126

samples/dungeon/timemachine-shakeable/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@ dependencies {
3232
implementation(Dependencies.AndroidX.constraint_layout)
3333
implementation(Dependencies.AndroidX.material)
3434
implementation(Dependencies.Kotlin.Stdlib.jdk8)
35-
implementation("com.squareup:seismic:1.0.2")
35+
implementation(Dependencies.seismic)
3636
}

settings.gradle.kts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16+
import de.fayard.dependencies.bootstrapRefreshVersionsAndDependencies
17+
1618
rootProject.name = "workflow"
1719

1820
include(
@@ -50,3 +52,10 @@ include(
5052
":workflow-ui:modal-common",
5153
":workflow-ui:modal-android"
5254
)
55+
56+
buildscript {
57+
repositories { gradlePluginPortal() }
58+
// See https://github.com/jmfayard/refreshVersions
59+
dependencies.classpath("de.fayard:dependencies:0.5.8")
60+
}
61+
bootstrapRefreshVersionsAndDependencies()

versions.properties

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
## suppress inspection "SpellCheckingInspection" for whole file
2+
##
3+
## Dependencies and Plugin versions with their available updates
4+
## Generated by $ ./gradlew refreshVersions
5+
## Please, don't put extra comments in that file yet, keeping them is not supported yet.
6+
plugin.android=4.0.0
7+
version.androidx.activity=1.1.0
8+
version.androidx.appcompat=1.1.0
9+
version.androidx.constraintlayout=1.1.3
10+
version.androidx.databinding=4.0.0
11+
version.androidx.fragment=1.2.3
12+
version.androidx.gridlayout=1.0.0
13+
version.androidx.lifecycle=2.2.0
14+
version.androidx.recyclerview=1.1.0
15+
version.androidx.savedstate=1.0.0
16+
version.androidx.test.espresso=3.2.0
17+
version.androidx.test.ext.junit=1.1.1
18+
version.androidx.test.ext.truth=1.2.0
19+
version.androidx.test.runner=1.2.0
20+
version.androidx.test.uiautomator=2.2.0
21+
version.androidx.test=1.2.0
22+
version.androidx.transition=1.3.1
23+
version.com.android.tools..desugar_jdk_libs=1.0.5
24+
version.com.charleskorn.kaml..kaml=0.16.1
25+
version.com.google.truth..truth=1.0.1
26+
version.com.googlecode.lanterna..lanterna=3.0.2
27+
version.com.jakewharton.timber..timber=4.7.1
28+
version.com.nhaarman..mockito-kotlin-kt1.1=1.6.0
29+
version.com.squareup..seismic=1.0.2
30+
version.com.vanniktech..gradle-maven-publish-plugin=0.11.1
31+
version.cycler=0.1.3
32+
version.google.android.material=1.1.0
33+
version.io.gitlab.arturbosch.detekt..detekt-gradle-plugin=1.0.1
34+
version.io.reactivex.rxjava2..rxandroid=2.1.1
35+
version.io.reactivex.rxjava2..rxjava=2.2.19
36+
version.junit.junit=4.13
37+
version.kotlin=1.3.72
38+
version.kotlinx.coroutines=1.3.7
39+
version.kotlinx.serialization=0.20.0
40+
version.me.champeau.gradle..jmh-gradle-plugin=0.5.0
41+
version.moshi=1.9.2
42+
version.okio=2.5.0
43+
version.org.hamcrest..hamcrest-core=2.2
44+
version.org.jetbrains..annotations=19.0.0
45+
version.org.jetbrains.dokka..dokka-gradle-plugin=0.10.0
46+
version.org.jetbrains.kotlin..kotlin-gradle-plugin=1.3.72
47+
version.org.jetbrains.kotlin..kotlin-reflect=1.3.72
48+
version.org.jetbrains.kotlinx..binary-compatibility-validator=0.2.3
49+
version.org.jlleitschuh.gradle..ktlint-gradle=9.2.1
50+
version.org.jlleitschuh.gradle=9.2.0
51+
version.org.mockito=3.3.3
52+
version.org.openjdk.jmh..jmh-core=1.23
53+
version.org.openjdk.jmh..jmh-generator-annprocess=1.23
54+
version.org.openjdk.jmh=1.23

0 commit comments

Comments
 (0)