From 584ffcff9d643575b0d017812cc60797aa109e7e Mon Sep 17 00:00:00 2001 From: Gabriel Luong Date: Wed, 21 Jun 2023 12:19:45 -0400 Subject: [PATCH] Bug 1837107 - Unify FenixDependencies with AC's DependenciesPlugin --- app/build.gradle | 87 +++++++++---------- benchmark/build.gradle | 6 +- build.gradle | 12 +-- mozilla-detekt-rules/build.gradle | 8 +- mozilla-lint-rules/build.gradle | 8 +- .../src/main/java/FenixDependenciesPlugin.kt | 81 ----------------- 6 files changed, 59 insertions(+), 143 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4868deede..5be7a5815 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -248,7 +248,7 @@ android { } composeOptions { - kotlinCompilerExtensionVersion = FenixVersions.androidx_compose_compiler + kotlinCompilerExtensionVersion = Versions.compose_compiler } namespace 'org.mozilla.fenix' @@ -483,15 +483,14 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { dependencies { implementation project(':browser-engine-gecko') - implementation FenixDependencies.kotlin_coroutines - implementation FenixDependencies.kotlin_coroutines_android - testImplementation FenixDependencies.kotlin_coroutines_test - implementation FenixDependencies.androidx_appcompat - implementation FenixDependencies.androidx_constraintlayout - implementation FenixDependencies.androidx_coordinatorlayout + implementation ComponentsDependencies.kotlin_coroutines + testImplementation ComponentsDependencies.testing_coroutines + implementation ComponentsDependencies.androidx_appcompat + implementation ComponentsDependencies.androidx_constraintlayout + implementation ComponentsDependencies.androidx_coordinatorlayout implementation FenixDependencies.google_accompanist_drawablepainter - implementation FenixDependencies.sentry + implementation ComponentsDependencies.thirdparty_sentry_latest implementation project(':compose-awesomebar') implementation project(':compose-cfr') @@ -582,38 +581,38 @@ dependencies { implementation project(':lib-state') implementation project(':lib-dataprotect') - debugImplementation FenixDependencies.leakcanary - debugImplementation FenixDependencies.androidx_compose_ui_tooling + debugImplementation ComponentsDependencies.leakcanary + debugImplementation ComponentsDependencies.androidx_compose_ui_tooling - implementation FenixDependencies.androidx_activity_compose + implementation ComponentsDependencies.androidx_activity_compose implementation FenixDependencies.androidx_activity_ktx - implementation FenixDependencies.androidx_annotation - implementation FenixDependencies.androidx_compose_ui - implementation FenixDependencies.androidx_compose_ui_tooling_preview - implementation FenixDependencies.androidx_compose_foundation - implementation FenixDependencies.androidx_compose_material + implementation ComponentsDependencies.androidx_annotation + implementation ComponentsDependencies.androidx_compose_ui + implementation ComponentsDependencies.androidx_compose_ui_tooling_preview + implementation ComponentsDependencies.androidx_compose_foundation + implementation ComponentsDependencies.androidx_compose_material implementation FenixDependencies.androidx_legacy - implementation FenixDependencies.androidx_biometric + implementation ComponentsDependencies.androidx_biometric implementation FenixDependencies.androidx_paging - implementation FenixDependencies.androidx_preference - implementation FenixDependencies.androidx_fragment + implementation ComponentsDependencies.androidx_preferences + implementation ComponentsDependencies.androidx_fragment implementation FenixDependencies.androidx_navigation_fragment implementation FenixDependencies.androidx_navigation_ui - implementation FenixDependencies.androidx_recyclerview + implementation ComponentsDependencies.androidx_recyclerview implementation FenixDependencies.androidx_lifecycle_common - implementation FenixDependencies.androidx_lifecycle_livedata - implementation FenixDependencies.androidx_lifecycle_process - implementation FenixDependencies.androidx_lifecycle_runtime + implementation ComponentsDependencies.androidx_lifecycle_livedata + implementation ComponentsDependencies.androidx_lifecycle_process + implementation ComponentsDependencies.androidx_lifecycle_runtime - implementation FenixDependencies.androidx_lifecycle_viewmodel - implementation FenixDependencies.androidx_core - implementation FenixDependencies.androidx_core_ktx + implementation ComponentsDependencies.androidx_lifecycle_viewmodel + implementation ComponentsDependencies.androidx_core + implementation ComponentsDependencies.androidx_core_ktx implementation FenixDependencies.androidx_transition - implementation FenixDependencies.androidx_work_ktx + implementation ComponentsDependencies.androidx_work_runtime implementation FenixDependencies.androidx_datastore - implementation FenixDependencies.androidx_data_store_preferences + implementation ComponentsDependencies.androidx_data_store_preferences implementation FenixDependencies.protobuf_javalite - implementation FenixDependencies.google_material + implementation ComponentsDependencies.google_material implementation FenixDependencies.adjust implementation FenixDependencies.installreferrer // Required by Adjust @@ -626,14 +625,14 @@ dependencies { implementation FenixDependencies.androidx_profileinstaller - androidTestImplementation FenixDependencies.uiautomator + androidTestImplementation ComponentsDependencies.androidx_test_uiautomator androidTestImplementation FenixDependencies.fastlane // This Falcon version is added to maven central now required for Screengrab androidTestImplementation FenixDependencies.falcon - androidTestImplementation FenixDependencies.androidx_compose_ui_test + androidTestImplementation ComponentsDependencies.androidx_compose_ui_test - androidTestImplementation FenixDependencies.espresso_core, { + androidTestImplementation ComponentsDependencies.androidx_espresso_core, { exclude group: 'com.android.support', module: 'support-annotations' } @@ -647,32 +646,30 @@ dependencies { exclude module: 'protobuf-lite' } - androidTestImplementation FenixDependencies.androidx_test_core + androidTestImplementation ComponentsDependencies.androidx_test_core androidTestImplementation FenixDependencies.espresso_idling_resources androidTestImplementation FenixDependencies.espresso_intents - androidTestImplementation FenixDependencies.tools_test_runner - androidTestImplementation FenixDependencies.tools_test_rules + androidTestImplementation ComponentsDependencies.androidx_test_runner + androidTestImplementation ComponentsDependencies.androidx_test_rules androidTestUtil FenixDependencies.orchestrator - androidTestImplementation FenixDependencies.espresso_core, { + androidTestImplementation ComponentsDependencies.androidx_espresso_core, { exclude group: 'com.android.support', module: 'support-annotations' } - androidTestImplementation FenixDependencies.androidx_junit - androidTestImplementation FenixDependencies.androidx_test_extensions - androidTestImplementation FenixDependencies.androidx_work_testing + androidTestImplementation ComponentsDependencies.androidx_test_junit + androidTestImplementation ComponentsDependencies.androidx_work_testing androidTestImplementation FenixDependencies.androidx_benchmark_junit4 androidTestImplementation FenixDependencies.mockwebserver testImplementation project(':support-test') testImplementation project(':support-test-libstate') - testImplementation FenixDependencies.androidx_junit - testImplementation FenixDependencies.androidx_test_extensions - testImplementation FenixDependencies.androidx_work_testing - testImplementation (FenixDependencies.robolectric) { + testImplementation ComponentsDependencies.androidx_test_junit + testImplementation ComponentsDependencies.androidx_work_testing + testImplementation (ComponentsDependencies.testing_robolectric) { exclude group: 'org.apache.maven' } - testImplementation FenixDependencies.maven_ant_tasks + testImplementation ComponentsDependencies.testing_maven_ant_tasks implementation project(':support-rusthttp') androidTestImplementation FenixDependencies.mockk_android @@ -711,7 +708,7 @@ if (project.hasProperty("coverage")) { } jacoco { - toolVersion = FenixVersions.jacoco + toolVersion = Versions.jacoco } android.applicationVariants.all { variant -> diff --git a/benchmark/build.gradle b/benchmark/build.gradle index 6080f21f6..509794ab6 100644 --- a/benchmark/build.gradle +++ b/benchmark/build.gradle @@ -57,9 +57,9 @@ configurations.all { } dependencies { - implementation FenixDependencies.androidx_junit - implementation FenixDependencies.espresso_core - implementation FenixDependencies.uiautomator + implementation ComponentsDependencies.androidx_test_junit + implementation ComponentsDependencies.androidx_espresso_core + implementation ComponentsDependencies.androidx_test_uiautomator implementation FenixDependencies.androidx_benchmark_macro_junit4 } diff --git a/build.gradle b/build.gradle index 465ffdcb8..76dfee9e3 100644 --- a/build.gradle +++ b/build.gradle @@ -70,8 +70,8 @@ buildscript { } dependencies { - classpath FenixDependencies.tools_androidgradle - classpath FenixDependencies.tools_kotlingradle + classpath ComponentsDependencies.tools_androidgradle + classpath ComponentsDependencies.tools_kotlingradle classpath FenixDependencies.tools_benchmarkgradle classpath FenixDependencies.androidx_safeargs classpath FenixDependencies.osslicenses_plugin @@ -85,9 +85,9 @@ buildscript { // Variables in plugins {} aren't directly supported. Hack around it by setting an // intermediate variable which can pull from FenixDependenciesPlugin.kt and be used later. ext { - detekt_plugin = FenixVersions.detekt + detekt_plugin = Versions.detekt protobuf_plugin = FenixVersions.protobuf_plugin - python_envs_plugin = FenixVersions.python_envs_plugin + python_envs_plugin = Versions.python_envs_plugin } } @@ -217,14 +217,14 @@ configurations { } dependencies { - ktlint("com.pinterest:ktlint:${FenixVersions.ktlint}") { + ktlint("com.pinterest:ktlint:${Versions.ktlint}") { attributes { attribute(Bundling.BUNDLING_ATTRIBUTE, getObjects().named(Bundling, Bundling.EXTERNAL)) } } detekt project(":mozilla-detekt-rules") - detekt "io.gitlab.arturbosch.detekt:detekt-cli:${FenixVersions.detekt}" + detekt "io.gitlab.arturbosch.detekt:detekt-cli:${Versions.detekt}" } tasks.register('ktlint', JavaExec) { diff --git a/mozilla-detekt-rules/build.gradle b/mozilla-detekt-rules/build.gradle index cb8ee4fe0..8588c0504 100644 --- a/mozilla-detekt-rules/build.gradle +++ b/mozilla-detekt-rules/build.gradle @@ -1,11 +1,11 @@ apply plugin: 'kotlin' dependencies { - compileOnly FenixDependencies.detektApi - implementation FenixDependencies.androidx_annotation + compileOnly ComponentsDependencies.tools_detekt_api + implementation ComponentsDependencies.androidx_annotation - testImplementation FenixDependencies.detektApi - testImplementation FenixDependencies.detektTest + testImplementation ComponentsDependencies.tools_detekt_api + testImplementation ComponentsDependencies.tools_detekt_test testImplementation FenixDependencies.junitApi testImplementation FenixDependencies.junitParams testRuntimeOnly FenixDependencies.junitEngine diff --git a/mozilla-lint-rules/build.gradle b/mozilla-lint-rules/build.gradle index 80f99ab24..00fcdb7d3 100644 --- a/mozilla-lint-rules/build.gradle +++ b/mozilla-lint-rules/build.gradle @@ -21,12 +21,12 @@ repositories { } dependencies { - compileOnly "com.android.tools.lint:lint-api:${FenixVersions.android_lint_api}" - compileOnly "com.android.tools.lint:lint-checks:${FenixVersions.android_lint_api}" + compileOnly "com.android.tools.lint:lint-api:${Versions.lint}" + compileOnly "com.android.tools.lint:lint-checks:${Versions.lint}" testImplementation "junit:junit:4.13.2" - testImplementation "com.android.tools.lint:lint:${FenixVersions.android_lint_api}" - testImplementation "com.android.tools.lint:lint-tests:${FenixVersions.android_lint_api}" + testImplementation "com.android.tools.lint:lint:${Versions.lint}" + testImplementation "com.android.tools.lint:lint-tests:${Versions.lint}" } jar { diff --git a/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt b/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt index af23037e1..2ba28216e 100644 --- a/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt +++ b/plugins/fenixdependencies/src/main/java/FenixDependenciesPlugin.kt @@ -13,49 +13,20 @@ class FenixDependenciesPlugin : Plugin { } object FenixVersions { - const val kotlin = "1.8.21" - const val coroutines = "1.7.1" - const val python_envs_plugin = "0.0.31" - - // These versions are linked: lint should be X+23.Y.Z of gradle_plugin version, according to: - // https://github.com/alexjlockwood/android-lint-checks-demo/blob/0245fc027463137b1b4afb97c5295d60dce998b6/dependencies.gradle#L3 - const val android_gradle_plugin = "7.4.2" - const val android_lint_api = "30.4.2" - - const val sentry = "6.21.0" - const val leakcanary = "2.11" const val osslicenses_plugin = "0.10.4" - const val detekt = "1.23.0" - const val ktlint = "0.48.2" - const val maven_ant_tasks = "2.1.3" - const val jacoco = "0.8.10" const val falcon = "2.2.0" const val fastlane = "2.1.1" const val androidx_activity = "1.7.2" - const val androidx_compose = "1.4.3" - const val androidx_compose_compiler = "1.4.7" - const val androidx_appcompat = "1.6.1" const val androidx_benchmark = "1.1.1" - const val androidx_biometric = "1.1.0" - const val androidx_coordinator_layout = "1.2.0" - const val androidx_constraint_layout = "2.1.4" - const val androidx_preference = "1.1.1" const val androidx_profileinstaller = "1.3.1" const val androidx_legacy = "1.0.0" - const val androidx_annotation = "1.6.0" const val androidx_lifecycle = "2.6.1" - const val androidx_fragment = "1.6.0" const val androidx_navigation = "2.5.3" - const val androidx_recyclerview = "1.3.0" - const val androidx_core = "1.10.1" const val androidx_paging = "3.1.1" const val androidx_transition = "1.4.1" - const val androidx_work = "2.7.1" const val androidx_datastore = "1.0.0" - const val androidx_datastore_preferences = "1.0.0" - const val google_material = "1.9.0" const val google_accompanist = "0.30.1" const val adjust = "4.33.0" @@ -65,8 +36,6 @@ object FenixVersions { const val mockk = "1.13.5" const val mockwebserver = "4.11.0" - const val uiautomator = "2.2.0" - const val robolectric = "4.10.1" const val google_ads_id_version = "16.0.0" @@ -79,58 +48,23 @@ object FenixVersions { @Suppress("unused") object FenixDependencies { - const val tools_androidgradle = "com.android.tools.build:gradle:${FenixVersions.android_gradle_plugin}" - const val tools_kotlingradle = "org.jetbrains.kotlin:kotlin-gradle-plugin:${FenixVersions.kotlin}" const val tools_benchmarkgradle = "androidx.benchmark:benchmark-gradle-plugin:${FenixVersions.androidx_benchmark}" - const val kotlin_reflect = "org.jetbrains.kotlin:kotlin-reflect:${FenixVersions.kotlin}" - const val kotlin_coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-core:${FenixVersions.coroutines}" - const val kotlin_coroutines_test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${FenixVersions.coroutines}" - const val kotlin_coroutines_android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${FenixVersions.coroutines}" const val osslicenses_plugin = "com.google.android.gms:oss-licenses-plugin:${FenixVersions.osslicenses_plugin}" - const val sentry = "io.sentry:sentry-android:${FenixVersions.sentry}" - const val leakcanary = "com.squareup.leakcanary:leakcanary-android-core:${FenixVersions.leakcanary}" - - const val androidx_compose_ui = "androidx.compose.ui:ui:${FenixVersions.androidx_compose}" - const val androidx_compose_ui_test = "androidx.compose.ui:ui-test-junit4:${FenixVersions.androidx_compose}" - const val androidx_compose_ui_test_manifest = "androidx.compose.ui:ui-test-manifest:${FenixVersions.androidx_compose}" - const val androidx_compose_ui_tooling = "androidx.compose.ui:ui-tooling:${FenixVersions.androidx_compose}" - const val androidx_compose_ui_tooling_preview = "androidx.compose.ui:ui-tooling-preview:${FenixVersions.androidx_compose}" - const val androidx_compose_foundation = "androidx.compose.foundation:foundation:${FenixVersions.androidx_compose}" - const val androidx_compose_material = "androidx.compose.material:material:${FenixVersions.androidx_compose}" - const val androidx_annotation = "androidx.annotation:annotation:${FenixVersions.androidx_annotation}" const val androidx_benchmark_junit4 = "androidx.benchmark:benchmark-junit4:${FenixVersions.androidx_benchmark}" const val androidx_benchmark_macro_junit4 = "androidx.benchmark:benchmark-macro-junit4:${FenixVersions.androidx_benchmark}" const val androidx_profileinstaller = "androidx.profileinstaller:profileinstaller:${FenixVersions.androidx_profileinstaller}" - const val androidx_biometric = "androidx.biometric:biometric:${FenixVersions.androidx_biometric}" - const val androidx_fragment = "androidx.fragment:fragment-ktx:${FenixVersions.androidx_fragment}" - const val androidx_activity_compose = "androidx.activity:activity-compose:${FenixVersions.androidx_activity}" const val androidx_activity_ktx = "androidx.activity:activity-ktx:${FenixVersions.androidx_activity}" - const val androidx_appcompat = "androidx.appcompat:appcompat:${FenixVersions.androidx_appcompat}" - const val androidx_coordinatorlayout = "androidx.coordinatorlayout:coordinatorlayout:${FenixVersions.androidx_coordinator_layout}" - const val androidx_constraintlayout = "androidx.constraintlayout:constraintlayout:${FenixVersions.androidx_constraint_layout}" const val androidx_legacy = "androidx.legacy:legacy-support-v4:${FenixVersions.androidx_legacy}" const val androidx_lifecycle_common = "androidx.lifecycle:lifecycle-common:${FenixVersions.androidx_lifecycle}" - const val androidx_lifecycle_livedata = "androidx.lifecycle:lifecycle-livedata-ktx:${FenixVersions.androidx_lifecycle}" - const val androidx_lifecycle_process = "androidx.lifecycle:lifecycle-process:${FenixVersions.androidx_lifecycle}" - const val androidx_lifecycle_viewmodel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${FenixVersions.androidx_lifecycle}" - const val androidx_lifecycle_runtime = "androidx.lifecycle:lifecycle-runtime-ktx:${FenixVersions.androidx_lifecycle}" const val androidx_paging = "androidx.paging:paging-runtime-ktx:${FenixVersions.androidx_paging}" - const val androidx_preference = "androidx.preference:preference-ktx:${FenixVersions.androidx_preference}" const val androidx_safeargs = "androidx.navigation:navigation-safe-args-gradle-plugin:${FenixVersions.androidx_navigation}" const val androidx_navigation_fragment = "androidx.navigation:navigation-fragment-ktx:${FenixVersions.androidx_navigation}" const val androidx_navigation_ui = "androidx.navigation:navigation-ui:${FenixVersions.androidx_navigation}" - const val androidx_recyclerview = "androidx.recyclerview:recyclerview:${FenixVersions.androidx_recyclerview}" - const val androidx_core = "androidx.core:core:${FenixVersions.androidx_core}" - const val androidx_core_ktx = "androidx.core:core-ktx:${FenixVersions.androidx_core}" const val androidx_transition = "androidx.transition:transition:${FenixVersions.androidx_transition}" - const val androidx_work_ktx = "androidx.work:work-runtime-ktx:${FenixVersions.androidx_work}" - const val androidx_work_testing = "androidx.work:work-testing:${FenixVersions.androidx_work}" const val androidx_datastore = "androidx.datastore:datastore:${FenixVersions.androidx_datastore}" - const val androidx_data_store_preferences = "androidx.datastore:datastore-preferences:${FenixVersions.androidx_datastore_preferences}" - const val google_material = "com.google.android.material:material:${FenixVersions.google_material}" const val google_accompanist_drawablepainter = "com.google.accompanist:accompanist-drawablepainter:${FenixVersions.google_accompanist}" const val protobuf_javalite = "com.google.protobuf:protobuf-javalite:${FenixVersions.protobuf}" @@ -139,10 +73,8 @@ object FenixDependencies { const val adjust = "com.adjust.sdk:adjust-android:${FenixVersions.adjust}" const val installreferrer = "com.android.installreferrer:installreferrer:${FenixVersions.installreferrer}" - const val junit = "junit:junit:${FenixVersions.junit}" const val mockk = "io.mockk:mockk:${FenixVersions.mockk}" const val mockk_android = "io.mockk:mockk-android:${FenixVersions.mockk}" - const val maven_ant_tasks = "org.apache.maven:maven-ant-tasks:${FenixVersions.maven_ant_tasks}" const val falcon = "com.jraska:falcon:${FenixVersions.falcon}" const val fastlane = "tools.fastlane:screengrab:${FenixVersions.fastlane}" @@ -152,29 +84,18 @@ object FenixDependencies { // https://developer.android.com/jetpack/androidx/releases/test // For the full IDs of these test dependencies, see: // https://developer.android.com/training/testing/set-up-project#android-test-dependencies - private const val androidx_test_shared_version = "1.5.0" - private const val androidx_test_junit = "1.1.5" private const val androidx_test_orchestrator = "1.4.2" - private const val androidx_test_runner = "1.5.2" - const val androidx_test_core = "androidx.test:core:$androidx_test_shared_version" private const val androidx_espresso_version = "3.5.1" - const val espresso_core = "androidx.test.espresso:espresso-core:$androidx_espresso_version" const val espresso_contrib = "androidx.test.espresso:espresso-contrib:$androidx_espresso_version" const val espresso_idling_resources = "androidx.test.espresso:espresso-idling-resource:$androidx_espresso_version" const val espresso_intents = "androidx.test.espresso:espresso-intents:$androidx_espresso_version" - const val androidx_junit = "androidx.test.ext:junit:$androidx_test_junit" - const val androidx_test_extensions = "androidx.test.ext:junit-ktx:$androidx_test_junit" // Monitor is unused const val orchestrator = "androidx.test:orchestrator:$androidx_test_orchestrator" - const val tools_test_runner = "androidx.test:runner:$androidx_test_runner" - const val tools_test_rules = "androidx.test:rules:$androidx_test_shared_version" // Truth is unused // Test services is unused // --- END AndroidX test dependencies --- // const val mockwebserver = "com.squareup.okhttp3:mockwebserver:${FenixVersions.mockwebserver}" - const val uiautomator = "androidx.test.uiautomator:uiautomator:${FenixVersions.uiautomator}" - const val robolectric = "org.robolectric:robolectric:${FenixVersions.robolectric}" const val google_ads_id = "com.google.android.gms:play-services-ads-identifier:${FenixVersions.google_ads_id_version}" @@ -182,8 +103,6 @@ object FenixDependencies { const val google_play_review = "com.google.android.play:review:${FenixVersions.google_play_review_version}" const val google_play_review_ktx = "com.google.android.play:review-ktx:${FenixVersions.google_play_review_version}" - const val detektApi = "io.gitlab.arturbosch.detekt:detekt-api:${FenixVersions.detekt}" - const val detektTest = "io.gitlab.arturbosch.detekt:detekt-test:${FenixVersions.detekt}" const val junitApi = "org.junit.jupiter:junit-jupiter-api:${FenixVersions.junit}" const val junitParams = "org.junit.jupiter:junit-jupiter-params:${FenixVersions.junit}" const val junitEngine = "org.junit.jupiter:junit-jupiter-engine:${FenixVersions.junit}"