Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,21 @@ subprojects {
tasks.findByName("check")
?.dependsOn("detekt")

// Can't use the normal placeholder syntax to reference the reflect version, since that
// placeholder seems to only be evaluated if the module has a direct dependency on the library.
val kotlinReflectVersion = File(rootDir, "versions.properties")
.useLines { it.first { line -> "kotlin-reflect" in line } }
.split("=")
.last()

configurations.configureEach {
// There could be transitive dependencies in tests with a lower version. This could cause
// problems with a newer Kotlin version that we use.
resolutionStrategy.force(Dependencies.Kotlin.reflect)
resolutionStrategy.force("org.jetbrains.kotlin:kotlin-reflect:$kotlinReflectVersion")
}
}

tasks.withType<KotlinCompile>() {
tasks.withType<KotlinCompile> {
kotlinOptions {
// Allow warnings when running from IDE, makes it easier to experiment.
if (!isRunningFromIde) {
Expand Down
110 changes: 52 additions & 58 deletions buildSrc/src/main/java/Dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,49 @@ import java.util.Locale.US
import kotlin.reflect.full.declaredMembers

object Versions {
const val coroutines = "1.3.7"
const val kotlin = "1.3.72"
const val targetSdk = 29
}

@Suppress("unused")
object Dependencies {
const val android_gradle_plugin = "com.android.tools.build:gradle:4.0.0"
const val android_gradle_plugin = "com.android.tools.build:gradle:_"

object AndroidX {
const val activity = "androidx.activity:activity:1.1.0"
const val annotations = "androidx.annotation:annotation:1.1.0"
const val appcompat = "androidx.appcompat:appcompat:1.1.0"
const val constraint_layout = "androidx.constraintlayout:constraintlayout:1.1.3"
const val fragment = "androidx.fragment:fragment:1.2.3"
const val gridlayout = "androidx.gridlayout:gridlayout:1.0.0"
const val activity = "androidx.activity:activity:_"
const val appcompat = "androidx.appcompat:appcompat:_"
const val constraint_layout = "androidx.constraintlayout:constraintlayout:_"
const val fragment = "androidx.fragment:fragment:_"
const val gridlayout = "androidx.gridlayout:gridlayout:_"

object Lifecycle {
const val ktx = "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
const val reactivestreams = "androidx.lifecycle:lifecycle-reactivestreams-ktx:2.2.0"
const val ktx = "androidx.lifecycle:lifecycle-runtime-ktx:_"
}

// Note that we're not using the actual androidx material dep yet, it's still alpha.
const val material = "com.google.android.material:material:1.1.0"
const val recyclerview = "androidx.recyclerview:recyclerview:1.1.0"
const val material = "com.google.android.material:material:_"
const val recyclerview = "androidx.recyclerview:recyclerview:_"

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

const val cycler = "com.squareup.cycler:cycler:0.1.3"
const val cycler = "com.squareup.cycler:cycler:_"

// Required for Dungeon Crawler sample.
const val desugar_jdk_libs = "com.android.tools:desugar_jdk_libs:1.0.5"
const val moshi = "com.squareup.moshi:moshi:1.9.2"
const val rxandroid2 = "io.reactivex.rxjava2:rxandroid:2.1.1"
const val timber = "com.jakewharton.timber:timber:4.7.1"
const val desugar_jdk_libs = "com.android.tools:desugar_jdk_libs:_"
const val moshi = "com.squareup.moshi:moshi:_"
const val rxandroid2 = "io.reactivex.rxjava2:rxandroid:_"
const val seismic = "com.squareup:seismic:_"
const val timber = "com.jakewharton.timber:timber:_"

object Kotlin {
const val binaryCompatibilityValidatorPlugin =
"org.jetbrains.kotlinx:binary-compatibility-validator:0.2.3"
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
"org.jetbrains.kotlinx:binary-compatibility-validator:_"
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:_"

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

object Coroutines {
const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}"
const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutines}"
const val rx2 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:${Versions.coroutines}"
const val android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:_"
const val core = "org.jetbrains.kotlinx:kotlinx-coroutines-core:_"
const val rx2 = "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:_"

const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.coroutines}"
const val test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:_"
}

const val moshi = "com.squareup.moshi:moshi-kotlin:1.9.2"
const val reflect = "org.jetbrains.kotlin:kotlin-reflect:${Versions.kotlin}"
const val moshi = "com.squareup.moshi:moshi-kotlin:_"
const val reflect = "org.jetbrains.kotlin:kotlin-reflect:_"

object Serialization {
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-serialization:${Versions.kotlin}"
const val runtime = "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.20.0"
const val kaml = "com.charleskorn.kaml:kaml:0.16.1"
const val gradlePlugin = "org.jetbrains.kotlin:kotlin-serialization:_"
const val runtime = "org.jetbrains.kotlinx:kotlinx-serialization-runtime:_"
const val kaml = "com.charleskorn.kaml:kaml:_"
}

object Test {
const val common = "org.jetbrains.kotlin:kotlin-test-common"
const val annotations = "org.jetbrains.kotlin:kotlin-test-annotations-common"
const val jdk = "org.jetbrains.kotlin:kotlin-test-junit"

const val mockito = "com.nhaarman:mockito-kotlin-kt1.1:1.6.0"
const val mockito = "com.nhaarman:mockito-kotlin-kt1.1:_"
}
}

const val dokka = "org.jetbrains.dokka:dokka-gradle-plugin:0.10.0"
const val dokka = "org.jetbrains.dokka:dokka-gradle-plugin:_"

object Jmh {
const val gradlePlugin = "me.champeau.gradle:jmh-gradle-plugin:0.5.0"
const val core = "org.openjdk.jmh:jmh-core:1.23"
const val generator = "org.openjdk.jmh:jmh-generator-annprocess:1.23"
const val gradlePlugin = "me.champeau.gradle:jmh-gradle-plugin:_"
const val core = "org.openjdk.jmh:jmh-core:_"
const val generator = "org.openjdk.jmh:jmh-generator-annprocess:_"
}

const val mavenPublish = "com.vanniktech:gradle-maven-publish-plugin:0.11.1"
const val ktlint = "org.jlleitschuh.gradle:ktlint-gradle:9.2.0"
const val lanterna = "com.googlecode.lanterna:lanterna:3.0.2"
const val detekt = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.1"
const val okio = "com.squareup.okio:okio:2.5.0"
const val mavenPublish = "com.vanniktech:gradle-maven-publish-plugin:_"
const val ktlint = "org.jlleitschuh.gradle:ktlint-gradle:_"
const val lanterna = "com.googlecode.lanterna:lanterna:_"
const val detekt = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:_"
const val okio = "com.squareup.okio:okio:_"

object RxJava2 {
const val rxjava2 = "io.reactivex.rxjava2:rxjava:2.2.19"

const val extensions = "com.github.akarnokd:rxjava2-extensions:0.20.10"
const val rxjava2 = "io.reactivex.rxjava2:rxjava:_"
}

object Annotations {
const val intellij = "org.jetbrains:annotations:19.0.0"
const val intellij = "org.jetbrains:annotations:_"
}

object Test {
object AndroidX {
object Espresso {
const val contrib = "androidx.test.espresso:espresso-contrib:3.2.0"
const val core = "androidx.test.espresso:espresso-core:3.2.0"
const val idlingResource = "androidx.test.espresso:espresso-idling-resource:3.2.0"
const val intents = "androidx.test.espresso:espresso-intents:3.2.0"
const val core = "androidx.test.espresso:espresso-core:_"
const val idlingResource = "androidx.test.espresso:espresso-idling-resource:_"
const val intents = "androidx.test.espresso:espresso-intents:_"
}

const val junitExt = "androidx.test.ext:junit:1.1.1"
const val runner = "androidx.test:runner:1.2.0"
const val truthExt = "androidx.test.ext:truth:1.2.0"
const val uiautomator = "androidx.test.uiautomator:uiautomator:2.2.0"
const val junitExt = "androidx.test.ext:junit:_"
const val runner = "androidx.test:runner:_"
const val truthExt = "androidx.test.ext:truth:_"
const val uiautomator = "androidx.test.uiautomator:uiautomator:_"
}

const val hamcrestCore = "org.hamcrest:hamcrest-core:2.2"
const val junit = "junit:junit:4.13"
const val mockito = "org.mockito:mockito-core:3.3.3"
const val truth = "com.google.truth:truth:1.0.1"
const val hamcrestCore = "org.hamcrest:hamcrest-core:_"
const val junit = "junit:junit:_"
const val mockito = "org.mockito:mockito-core:_"
const val truth = "com.google.truth:truth:_"
}
}

Expand Down
2 changes: 1 addition & 1 deletion samples/dungeon/timemachine-shakeable/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@ dependencies {
implementation(Dependencies.AndroidX.constraint_layout)
implementation(Dependencies.AndroidX.material)
implementation(Dependencies.Kotlin.Stdlib.jdk8)
implementation("com.squareup:seismic:1.0.2")
implementation(Dependencies.seismic)
}
9 changes: 9 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import de.fayard.dependencies.bootstrapRefreshVersionsAndDependencies

rootProject.name = "workflow"

include(
Expand Down Expand Up @@ -50,3 +52,10 @@ include(
":workflow-ui:modal-common",
":workflow-ui:modal-android"
)

buildscript {
repositories { gradlePluginPortal() }
// See https://github.com/jmfayard/refreshVersions
dependencies.classpath("de.fayard:dependencies:0.5.8")
}
bootstrapRefreshVersionsAndDependencies()
54 changes: 54 additions & 0 deletions versions.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
## suppress inspection "SpellCheckingInspection" for whole file
##
## Dependencies and Plugin versions with their available updates
## Generated by $ ./gradlew refreshVersions
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What kind of control do we have when there are specific versions we don't want to bump? I guess we just don't use the _?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep. But the tooling is very safe – you run ./gradlew refreshVersions, and it just adds a bunch of comments to that file telling you what the latest versions are. You have to actually edit it to update.

## Please, don't put extra comments in that file yet, keeping them is not supported yet.
plugin.android=4.0.0
version.androidx.activity=1.1.0
version.androidx.appcompat=1.1.0
version.androidx.constraintlayout=1.1.3
version.androidx.databinding=4.0.0
version.androidx.fragment=1.2.3
version.androidx.gridlayout=1.0.0
version.androidx.lifecycle=2.2.0
version.androidx.recyclerview=1.1.0
version.androidx.savedstate=1.0.0
version.androidx.test.espresso=3.2.0
version.androidx.test.ext.junit=1.1.1
version.androidx.test.ext.truth=1.2.0
version.androidx.test.runner=1.2.0
version.androidx.test.uiautomator=2.2.0
version.androidx.test=1.2.0
version.androidx.transition=1.3.1
version.com.android.tools..desugar_jdk_libs=1.0.5
version.com.charleskorn.kaml..kaml=0.16.1
version.com.google.truth..truth=1.0.1
version.com.googlecode.lanterna..lanterna=3.0.2
version.com.jakewharton.timber..timber=4.7.1
version.com.nhaarman..mockito-kotlin-kt1.1=1.6.0
version.com.squareup..seismic=1.0.2
version.com.vanniktech..gradle-maven-publish-plugin=0.11.1
version.cycler=0.1.3
version.google.android.material=1.1.0
version.io.gitlab.arturbosch.detekt..detekt-gradle-plugin=1.0.1
version.io.reactivex.rxjava2..rxandroid=2.1.1
version.io.reactivex.rxjava2..rxjava=2.2.19
version.junit.junit=4.13
version.kotlin=1.3.72
version.kotlinx.coroutines=1.3.7
version.kotlinx.serialization=0.20.0
version.me.champeau.gradle..jmh-gradle-plugin=0.5.0
version.moshi=1.9.2
version.okio=2.5.0
version.org.hamcrest..hamcrest-core=2.2
version.org.jetbrains..annotations=19.0.0
version.org.jetbrains.dokka..dokka-gradle-plugin=0.10.0
version.org.jetbrains.kotlin..kotlin-gradle-plugin=1.3.72
version.org.jetbrains.kotlin..kotlin-reflect=1.3.72
version.org.jetbrains.kotlinx..binary-compatibility-validator=0.2.3
version.org.jlleitschuh.gradle..ktlint-gradle=9.2.1
version.org.jlleitschuh.gradle=9.2.0
version.org.mockito=3.3.3
version.org.openjdk.jmh..jmh-core=1.23
version.org.openjdk.jmh..jmh-generator-annprocess=1.23
version.org.openjdk.jmh=1.23