migrated to version catalogs

This commit is contained in:
Jie Li 2024-11-22 20:59:39 +00:00 committed by Siddhesh Naik
parent 9b78e49e45
commit de5d45849f
3 changed files with 243 additions and 117 deletions

View File

@ -3,14 +3,14 @@ import com.android.tools.profgen.ArtProfileSerializer
import com.android.tools.profgen.DexFile import com.android.tools.profgen.DexFile
plugins { plugins {
id "com.android.application" alias libs.plugins.android.application
id "kotlin-android" alias libs.plugins.kotlin.android
id "kotlin-kapt" alias libs.plugins.kotlin.compose
id "kotlin-parcelize" alias libs.plugins.kotlin.kapt
id "checkstyle" alias libs.plugins.kotlin.parcelize
id "org.sonarqube" version "4.0.0.2929" alias libs.plugins.checkstyle
id "org.jetbrains.kotlin.plugin.compose" version "${kotlin_version}" alias libs.plugins.sonarqube
id 'com.google.dagger.hilt.android' alias libs.plugins.hilt
} }
android { android {
@ -109,25 +109,6 @@ android {
} }
} }
ext {
checkstyleVersion = '10.12.1'
androidxLifecycleVersion = '2.6.2'
androidxRoomVersion = '2.6.1'
androidxWorkVersion = '2.8.1'
stateSaverVersion = '1.4.1'
exoPlayerVersion = '2.18.7'
googleAutoServiceVersion = '1.1.1'
groupieVersion = '2.10.1'
markwonVersion = '4.6.2'
leakCanaryVersion = '2.12'
stethoVersion = '1.6.0'
coilVersion = '3.0.3'
}
configurations { configurations {
checkstyle checkstyle
ktlint ktlint
@ -137,7 +118,7 @@ checkstyle {
getConfigDirectory().set(rootProject.file("checkstyle")) getConfigDirectory().set(rootProject.file("checkstyle"))
ignoreFailures false ignoreFailures false
showViolations true showViolations true
toolVersion = checkstyleVersion toolVersion = libs.versions.checkstyle.get()
} }
tasks.register('runCheckstyle', Checkstyle) { tasks.register('runCheckstyle', Checkstyle) {
@ -200,146 +181,140 @@ kapt {
dependencies { dependencies {
/** Desugaring **/ /** Desugaring **/
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.4' coreLibraryDesugaring libs.desugar.jdk.libs.nio
/** NewPipe libraries **/ /** NewPipe libraries **/
// You can use a local version by uncommenting a few lines in settings.gradle implementation libs.teamnewpipe.nanojson
// Or you can use a commit you pushed to GitHub by just replacing TeamNewPipe with your GitHub implementation libs.teamnewpipe.newpipe.extractor
// name and the commit hash with the commit hash of the (pushed) commit you want to test implementation libs.teamnewpipe.nononsense.filepicker
// This works thanks to JitPack: https://jitpack.io/
implementation 'com.github.TeamNewPipe:nanojson:1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751'
// WORKAROUND: v0.24.2 can't be resolved by jitpack -> use git commit hash instead
implementation 'com.github.TeamNewPipe:NewPipeExtractor:d3d5f2b3f03a5f2b479b9f6fdf1c2555cbb9de0e'
implementation 'com.github.TeamNewPipe:NoNonsense-FilePicker:5.0.0'
/** Checkstyle **/ /** Checkstyle **/
checkstyle "com.puppycrawl.tools:checkstyle:${checkstyleVersion}" checkstyle libs.tools.checkstyle
ktlint 'com.pinterest:ktlint:0.45.2' ktlint libs.tools.ktlint
/** Kotlin **/ /** Kotlin **/
implementation "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}" implementation libs.kotlin.stdlib
/** AndroidX **/ /** AndroidX **/
implementation 'androidx.appcompat:appcompat:1.6.1' implementation libs.androidx.appcompat
implementation 'androidx.cardview:cardview:1.0.0' implementation libs.androidx.cardview
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation libs.androidx.constraintlayout
implementation 'androidx.core:core-ktx:1.12.0' implementation libs.androidx.core.ktx
implementation 'androidx.documentfile:documentfile:1.0.1' implementation libs.androidx.documentfile
implementation 'androidx.fragment:fragment-compose:1.8.2' implementation libs.androidx.fragment.compose
implementation "androidx.lifecycle:lifecycle-livedata-ktx:${androidxLifecycleVersion}" implementation libs.androidx.lifecycle.livedata
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:${androidxLifecycleVersion}" implementation libs.androidx.lifecycle.viewmodel
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' implementation libs.androidx.localbroadcastmanager
implementation 'androidx.media:media:1.7.0' implementation libs.androidx.media
implementation 'androidx.preference:preference:1.2.1' implementation libs.androidx.preference
implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation libs.androidx.recyclerview
implementation "androidx.room:room-runtime:${androidxRoomVersion}" implementation libs.androidx.room.runtime
implementation "androidx.room:room-rxjava3:${androidxRoomVersion}" implementation libs.androidx.room.rxjava3
kapt "androidx.room:room-compiler:${androidxRoomVersion}" kapt libs.androidx.room.compiler
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation libs.androidx.swiperefreshlayout
// Newer version specified to prevent accessibility regressions with RecyclerView, see: // Newer version specified to prevent accessibility regressions with RecyclerView, see:
// https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01 // https://developer.android.com/jetpack/androidx/releases/viewpager2#1.1.0-alpha01
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta02' implementation libs.androidx.viewpager2
implementation "androidx.work:work-runtime-ktx:${androidxWorkVersion}" implementation libs.androidx.work.runtime
implementation "androidx.work:work-rxjava3:${androidxWorkVersion}" implementation libs.androidx.work.rxjava3
implementation 'com.google.android.material:material:1.11.0' implementation libs.androidx.material
/** Third-party libraries **/ /** Third-party libraries **/
// Instance state boilerplate elimination // Instance state boilerplate elimination
implementation 'com.github.livefront:bridge:v2.0.2' implementation libs.livefront.bridge
implementation "com.evernote:android-state:$stateSaverVersion" implementation libs.android.state
kapt "com.evernote:android-state-processor:$stateSaverVersion" kapt libs.android.state.processor
// HTML parser // HTML parser
implementation "org.jsoup:jsoup:1.17.2" implementation libs.jsoup
// HTTP client // HTTP client
implementation "com.squareup.okhttp3:okhttp:4.12.0" implementation libs.okhttp
// Media player // Media player
implementation "com.google.android.exoplayer:exoplayer-core:${exoPlayerVersion}" implementation libs.exoplayer.core
implementation "com.google.android.exoplayer:exoplayer-dash:${exoPlayerVersion}" implementation libs.exoplayer.dash
implementation "com.google.android.exoplayer:exoplayer-database:${exoPlayerVersion}" implementation libs.exoplayer.database
implementation "com.google.android.exoplayer:exoplayer-datasource:${exoPlayerVersion}" implementation libs.exoplayer.datasource
implementation "com.google.android.exoplayer:exoplayer-hls:${exoPlayerVersion}" implementation libs.exoplayer.hls
implementation "com.google.android.exoplayer:exoplayer-smoothstreaming:${exoPlayerVersion}" implementation libs.exoplayer.smoothstreaming
implementation "com.google.android.exoplayer:exoplayer-ui:${exoPlayerVersion}" implementation libs.exoplayer.ui
implementation "com.google.android.exoplayer:extension-mediasession:${exoPlayerVersion}" implementation libs.extension.mediasession
// Metadata generator for service descriptors // Metadata generator for service descriptors
compileOnly "com.google.auto.service:auto-service-annotations:${googleAutoServiceVersion}" compileOnly libs.auto.service
kapt "com.google.auto.service:auto-service:${googleAutoServiceVersion}" kapt libs.auto.service.kapt
// Manager for complex RecyclerView layouts // Manager for complex RecyclerView layouts
implementation "com.github.lisawray.groupie:groupie:${groupieVersion}" implementation libs.lisawray.groupie
implementation "com.github.lisawray.groupie:groupie-viewbinding:${groupieVersion}" implementation libs.lisawray.groupie.viewbinding
// Image loading // Image loading
implementation "io.coil-kt.coil3:coil-compose:${coilVersion}" implementation libs.coil.compose
implementation "io.coil-kt.coil3:coil-network-okhttp:${coilVersion}"
// Markdown library for Android // Markdown library for Android
implementation "io.noties.markwon:core:${markwonVersion}" implementation libs.markwon.core
implementation "io.noties.markwon:linkify:${markwonVersion}" implementation libs.markwon.linkify
// Crash reporting // Crash reporting
implementation "ch.acra:acra-core:5.11.3" implementation libs.acra.core
// Properly restarting // Properly restarting
implementation 'com.jakewharton:process-phoenix:2.1.2' implementation libs.process.phoenix
// Reactive extensions for Java VM // Reactive extensions for Java VM
implementation "io.reactivex.rxjava3:rxjava:3.1.8" implementation libs.rxjava3.rxjava
implementation "io.reactivex.rxjava3:rxandroid:3.0.2" implementation libs.rxjava3.rxandroid
// RxJava binding APIs for Android UI widgets // RxJava binding APIs for Android UI widgets
implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0" implementation libs.rxbinding4.rxbinding
// Date and time formatting // Date and time formatting
implementation "org.ocpsoft.prettytime:prettytime:5.0.8.Final" implementation libs.prettytime
// Jetpack Compose // Jetpack Compose
implementation(platform('androidx.compose:compose-bom:2024.10.01')) implementation(platform(libs.androidx.compose.bom))
implementation 'androidx.compose.material3:material3' implementation libs.androidx.compose.material3
implementation 'androidx.compose.material3.adaptive:adaptive' implementation libs.androidx.compose.adaptive
implementation 'androidx.activity:activity-compose' implementation libs.androidx.activity.compose
implementation 'androidx.compose.ui:ui-tooling-preview' implementation libs.androidx.compose.ui.tooling.preview
implementation 'androidx.lifecycle:lifecycle-viewmodel-compose' implementation libs.androidx.lifecycle.viewmodel.compose
implementation 'androidx.compose.ui:ui-text' // Needed for parsing HTML to AnnotatedString implementation libs.androidx.compose.ui.text // Needed for parsing HTML to AnnotatedString
implementation 'androidx.compose.material:material-icons-extended' implementation libs.androidx.compose.material.icons.extended
// Jetpack Compose related dependencies // Jetpack Compose related dependencies
implementation 'androidx.paging:paging-compose:3.3.2' implementation libs.androidx.paging.compose
implementation "androidx.navigation:navigation-compose:2.8.3" implementation libs.androidx.navigation.compose
// Coroutines interop // Coroutines interop
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-rx3:1.8.1' implementation libs.kotlinx.coroutines.rx3
// Hilt // Hilt
implementation("com.google.dagger:hilt-android:2.51.1") implementation libs.hilt.android
kapt("com.google.dagger:hilt-compiler:2.51.1") kapt(libs.hilt.compiler)
// Scroll // Scroll
implementation 'com.github.nanihadesuka:LazyColumnScrollbar:2.2.0' implementation libs.lazycolumnscrollbar
/** Debugging **/ /** Debugging **/
// Memory leak detection // Memory leak detection
debugImplementation "com.squareup.leakcanary:leakcanary-object-watcher-android:${leakCanaryVersion}" debugImplementation libs.leakcanary.object.watcher
debugImplementation "com.squareup.leakcanary:plumber-android:${leakCanaryVersion}" debugImplementation libs.leakcanary.plumber.android
debugImplementation "com.squareup.leakcanary:leakcanary-android-core:${leakCanaryVersion}" debugImplementation libs.leakcanary.android.core
// Debug bridge for Android // Debug bridge for Android
debugImplementation "com.facebook.stetho:stetho:${stethoVersion}" debugImplementation libs.stetho
debugImplementation "com.facebook.stetho:stetho-okhttp3:${stethoVersion}" debugImplementation libs.stetho.okhttp3
// Jetpack Compose // Jetpack Compose
debugImplementation 'androidx.compose.ui:ui-tooling' debugImplementation libs.androidx.compose.ui.tooling
/** Testing **/ /** Testing **/
testImplementation 'junit:junit:4.13.2' testImplementation libs.junit
testImplementation 'org.mockito:mockito-core:5.6.0' testImplementation libs.mockito.core
androidTestImplementation "androidx.test.ext:junit:1.1.5" androidTestImplementation libs.androidx.junit
androidTestImplementation "androidx.test:runner:1.5.2" androidTestImplementation libs.androidx.runner
androidTestImplementation "androidx.room:room-testing:${androidxRoomVersion}" androidTestImplementation libs.androidx.room.testing
androidTestImplementation "org.assertj:assertj-core:3.24.2" androidTestImplementation libs.assertj.core
} }
static String getGitWorkingBranch() { static String getGitWorkingBranch() {

View File

@ -1,15 +1,14 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
ext.kotlin_version = '2.0.21'
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:8.7.1' classpath libs.android.tools.build.gradle
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath libs.kotlin.gradle.plugin
classpath 'com.google.dagger:hilt-android-gradle-plugin:2.51.1' classpath libs.hilt.android.gradle.plugin
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files

152
gradle/libs.versions.toml Normal file
View File

@ -0,0 +1,152 @@
[versions]
acraCore = "5.11.3"
androidState = "1.4.1"
androidx-junit = "1.1.5"
appcompat = "1.6.1"
assertjCore = "3.24.2"
auto-service = "1.1.1"
bridge = "2.0.2"
cardview = "1.0.0"
checkstyle = "10.12.1"
coil = "3.0.3"
constraintlayout = "2.1.4"
core-ktx = "1.12.0"
desugar-jdk-libs-nio = "2.0.4"
documentFile = "1.0.1"
exoplayer = "2.18.7"
fragment-compose = "1.8.2"
gradle = "8.7.1"
groupie = "2.10.1"
hilt = "2.51.1"
jetpack-compose = "2024.10.01"
jsoup = "1.17.2"
junit = "4.13.2"
kotlin = "2.0.21"
kotlinxCoroutinesRx3 = "1.8.1"
ktlint = "0.45.2"
lazycolumnscrollbar = "2.2.0"
leakcanary = "2.12"
lifecycle = "2.6.2"
localbroadcastmanager = "1.1.0"
markwon = "4.6.2"
material = "1.11.0"
media = "1.7.0"
mockitoCore = "5.6.0"
navigationCompose = "2.8.3"
okhttp = "4.12.0"
pagingCompose = "3.3.2"
preference = "1.2.1"
prettytime = "5.0.8.Final"
processPhoenix = "2.1.2"
recyclerview = "1.3.2"
room = "2.6.1"
runner = "1.5.2"
rxandroid = "3.0.2"
rxbinding = "4.0.0"
rxjava = "3.1.8"
sonarqube = "4.0.0.2929"
stetho = "1.6.0"
swiperefreshlayout = "1.1.0"
# You can use a local version by uncommenting a few lines in settings.gradle
# Or you can use a commit you pushed to GitHub by just replacing TeamNewPipe with your GitHub
# name and the commit hash with the commit hash of the (pushed) commit you want to test
# This works thanks to JitPack: https://jitpack.io/
teamnewpipe-filepicker = "5.0.0"
teamnewpipe-newpipe-extractor = "d3d5f2b3f03a5f2b479b9f6fdf1c2555cbb9de0e"
teamnewpipe-nanojson = "1d9e1aea9049fc9f85e68b43ba39fe7be1c1f751"
viewpager2 = "1.1.0-beta02"
work = "2.8.1"
[plugins]
android-application = { id = "com.android.application" }
checkstyle = { id = "checkstyle" }
hilt = { id = "com.google.dagger.hilt.android" }
kotlin-android = { id = "kotlin-android" }
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlin-kapt = { id = "kotlin-kapt" }
kotlin-parcelize = { id = "kotlin-parcelize" }
sonarqube = { id = "org.sonarqube", version.ref = "sonarqube" }
[libraries]
acra-core = { group = "ch.acra", name = "acra-core", version.ref = "acraCore" }
android-state = { group = "com.evernote", name = "android-state", version.ref = "androidState" }
android-state-processor = { group = "com.evernote", name = "android-state-processor", version.ref = "androidState" }
android-tools-build-gradle = { group = "com.android.tools.build", name = "gradle", version.ref = "gradle" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
androidx-cardview = { group = "androidx.cardview", name = "cardview", version.ref = "cardview" }
androidx-compose-adaptive = { group = "androidx.compose.material3.adaptive", name = "adaptive" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "jetpack-compose" }
androidx-compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" }
androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" }
androidx-compose-ui-text = { group = "androidx.compose.ui", name = "ui-text" }
androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "core-ktx" }
androidx-documentfile = { group = "androidx.documentfile", name = "documentfile", version.ref = "documentFile" }
androidx-fragment-compose = { group = "androidx.fragment", name = "fragment-compose", version.ref = "fragment-compose" }
androidx-lifecycle-livedata = { group = "androidx.lifecycle", name = "lifecycle-livedata-ktx", version.ref = "lifecycle" }
androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-ktx", version.ref = "lifecycle" }
androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose" }
androidx-localbroadcastmanager = { group = "androidx.localbroadcastmanager", name = "localbroadcastmanager", version.ref = "localbroadcastmanager" }
androidx-material = { group = "com.google.android.material", name = "material", version.ref = "material" }
androidx-media = { group = "androidx.media", name = "media", version.ref = "media" }
androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-junit" }
androidx-paging-compose = { group = "androidx.paging", name = "paging-compose", version.ref = "pagingCompose" }
androidx-preference = { group = "androidx.preference", name = "preference", version.ref = "preference" }
androidx-recyclerview = { group = "androidx.recyclerview", name = "recyclerview", version.ref = "recyclerview" }
androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" }
androidx-room-rxjava3 = { group = "androidx.room", name = "room-rxjava3", version.ref = "room" }
androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
androidx-room-testing = { group = "androidx.room", name = "room-testing", version.ref = "room" }
androidx-runner = { group = "androidx.test", name = "runner", version.ref = "runner" }
androidx-swiperefreshlayout = { group = "androidx.swiperefreshlayout", name = "swiperefreshlayout", version.ref = "swiperefreshlayout" }
androidx-viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version.ref = "viewpager2" }
androidx-work-runtime = { group = "androidx.work", name = "work-runtime-ktx", version.ref = "work" }
androidx-work-rxjava3 = { group = "androidx.work", name = "work-rxjava3", version.ref = "work" }
assertj-core = { group = "org.assertj", name = "assertj-core", version.ref = "assertjCore" }
auto-service = { group = "com.google.auto.service", name = "auto-service-annotations", version.ref = "auto-service" }
auto-service-kapt = { group = "com.google.auto.service", name = "auto-service", version.ref = "auto-service" }
coil-compose = { group = "io.coil-kt.coil3", name = 'coil-compose', version.ref = "coil" }
desugar-jdk-libs-nio = { group = "com.android.tools", name = "desugar_jdk_libs_nio", version.ref = "desugar-jdk-libs-nio" }
exoplayer-core = { group = "com.google.android.exoplayer", name = "exoplayer-core", version.ref = "exoplayer" }
exoplayer-database = { group = "com.google.android.exoplayer", name = "exoplayer-database", version.ref = "exoplayer" }
exoplayer-datasource = { group = "com.google.android.exoplayer", name = "exoplayer-datasource", version.ref = "exoplayer" }
exoplayer-dash = { module = "com.google.android.exoplayer:exoplayer-dash", version.ref = "exoplayer" }
exoplayer-hls = { group = "com.google.android.exoplayer", name = "exoplayer-hls", version.ref = "exoplayer" }
exoplayer-smoothstreaming = { group = "com.google.android.exoplayer", name = "exoplayer-smoothstreaming", version.ref = "exoplayer" }
exoplayer-ui = { group = "com.google.android.exoplayer", name = "exoplayer-ui", version.ref = "exoplayer" }
extension-mediasession = { group = "com.google.android.exoplayer", name = "extension-mediasession", version.ref = "exoplayer" }
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-android-gradle-plugin = { group = "com.google.dagger", name = "hilt-android-gradle-plugin", version.ref = "hilt" }
hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
jsoup = { group = "org.jsoup", name = "jsoup", version.ref = "jsoup" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
kotlin-gradle-plugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlin" }
kotlinx-coroutines-rx3 = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-rx3", version.ref = "kotlinxCoroutinesRx3" }
lazycolumnscrollbar = { group = "com.github.nanihadesuka", name = "LazyColumnScrollbar", version.ref = "lazycolumnscrollbar" }
leakcanary-android-core = { module = "com.squareup.leakcanary:leakcanary-android-core", version.ref = "leakcanary" }
leakcanary-object-watcher = { group = "com.squareup.leakcanary", name = "leakcanary-object-watcher-android", version.ref = "leakcanary" }
leakcanary-plumber-android = { group = "com.squareup.leakcanary", name = "plumber-android", version.ref = "leakcanary" }
lisawray-groupie = { group = "com.github.lisawray.groupie", name = "groupie", version.ref = "groupie" }
lisawray-groupie-viewbinding = { group = "com.github.lisawray.groupie", name = "groupie-viewbinding", version.ref = "groupie" }
livefront-bridge = { group = "com.github.livefront", name = "bridge", version.ref = "bridge" }
markwon-core = { group = "io.noties.markwon", name = "core", version.ref = "markwon" }
markwon-linkify = { group = "io.noties.markwon", name = "linkify", version.ref = "markwon" }
mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockitoCore" }
okhttp = { group = "com.squareup.okhttp3", name = "okhttp", version.ref = "okhttp" }
prettytime = { group = "org.ocpsoft.prettytime", name = "prettytime", version.ref = "prettytime" }
process-phoenix = { group = "com.jakewharton", name = "process-phoenix", version.ref = "processPhoenix" }
rxjava3-rxandroid = { group = "io.reactivex.rxjava3", name = "rxandroid", version.ref = "rxandroid" }
rxbinding4-rxbinding = { group = "com.jakewharton.rxbinding4", name = "rxbinding", version.ref = "rxbinding" }
rxjava3-rxjava = { group = "io.reactivex.rxjava3", name = "rxjava", version.ref = "rxjava" }
stetho = { group = "com.facebook.stetho", name = "stetho", version.ref = "stetho" }
stetho-okhttp3 = { group = "com.facebook.stetho", name = "stetho-okhttp3", version.ref = "stetho" }
teamnewpipe-newpipe-extractor = { group = "com.github.TeamNewPipe", name = "NewPipeExtractor", version.ref = "teamnewpipe-newpipe-extractor" }
teamnewpipe-nononsense-filepicker = { group = "com.github.TeamNewPipe", name = "NoNonsense-FilePicker", version.ref = "teamnewpipe-filepicker" }
teamnewpipe-nanojson = { group = "com.github.TeamNewPipe", name = "nanojson", version.ref = "teamnewpipe-nanojson" }
tools-checkstyle = { group = "com.puppycrawl.tools", name = "checkstyle", version.ref = "checkstyle" }
tools-ktlint = { group = "com.pinterest", name = "ktlint", version.ref = "ktlint" }