| # Copyright (C) 2020 The Google Bazel Common Authors. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| """A macro to configure Dagger deps within a workspace""" |
| |
| load("//:build_defs.bzl", "POM_VERSION") |
| |
| _DAGGER_VERSION = POM_VERSION |
| _HILT_VERSION = POM_VERSION |
| |
| DAGGER_ARTIFACTS = [ |
| "com.google.dagger:dagger:" + _DAGGER_VERSION, |
| "com.google.dagger:dagger-compiler:" + _DAGGER_VERSION, |
| "com.google.dagger:dagger-producers:" + _DAGGER_VERSION, |
| "com.google.dagger:dagger-spi:" + _DAGGER_VERSION, |
| ] |
| |
| DAGGER_ANDROID_ARTIFACTS = [ |
| "com.google.dagger:dagger-android-processor:" + _DAGGER_VERSION, |
| "com.google.dagger:dagger-android-support:" + _DAGGER_VERSION, |
| "com.google.dagger:dagger-android:" + _DAGGER_VERSION, |
| ] |
| |
| HILT_ANDROID_ARTIFACTS = [ |
| "androidx.test:core:1.1.0", # Export for ApplicationProvider |
| "javax.annotation:jsr250-api:1.0", # Export for @Generated |
| "androidx.annotation:annotation:1.1.0", # Export for @CallSuper/@Nullable |
| "com.google.dagger:dagger:" + _DAGGER_VERSION, |
| "com.google.dagger:dagger-compiler:" + _DAGGER_VERSION, |
| "com.google.dagger:hilt-android:" + _HILT_VERSION, |
| "com.google.dagger:hilt-android-testing:" + _HILT_VERSION, |
| "com.google.dagger:hilt-android-compiler:" + _HILT_VERSION, |
| ] |
| |
| DAGGER_REPOSITORIES = [ |
| "https://maven.google.com", |
| "https://repo1.maven.org/maven2", |
| ] |
| |
| DAGGER_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES |
| |
| HILT_ANDROID_REPOSITORIES = DAGGER_REPOSITORIES |
| |
| # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro |
| # buildifier: disable=unnamed-macro |
| def dagger_rules(repo_name = "@maven"): |
| """Defines the Dagger targets with proper exported dependencies and plugins. |
| |
| The targets will be of the form ":<artifact-id>". |
| |
| Args: |
| repo_name: The name of the dependency repository (default is "@maven"). |
| """ |
| native.java_library( |
| name = "dagger", |
| exported_plugins = [":dagger-compiler"], |
| visibility = ["//visibility:public"], |
| exports = [ |
| "%s//:com_google_dagger_dagger" % repo_name, |
| "%s//:javax_inject_javax_inject" % repo_name, |
| ], |
| ) |
| |
| native.java_plugin( |
| name = "dagger-compiler", |
| generates_api = 1, |
| processor_class = "dagger.internal.codegen.ComponentProcessor", |
| deps = [ |
| "%s//:com_google_dagger_dagger_compiler" % repo_name, |
| ], |
| ) |
| |
| native.java_library( |
| name = "dagger-producers", |
| visibility = ["//visibility:public"], |
| exports = [ |
| ":dagger", |
| "%s//:com_google_dagger_dagger_producers" % repo_name, |
| ], |
| ) |
| |
| native.java_library( |
| name = "dagger-spi", |
| visibility = ["//visibility:public"], |
| exports = [ |
| "%s//:com_google_dagger_dagger_spi" % repo_name, |
| ], |
| ) |
| |
| # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro |
| # buildifier: disable=unnamed-macro |
| def dagger_android_rules(repo_name = "@maven"): |
| """Defines the Dagger Android targets with proper exported dependencies and plugins. |
| |
| The targets will be of the form ":<artifact-id>". |
| |
| Args: |
| repo_name: The name of the dependency repository (default is "@maven"). |
| """ |
| |
| # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android |
| # buildifier: disable=native-android |
| native.android_library( |
| name = "dagger-android", |
| exported_plugins = [":dagger-android-processor"], |
| visibility = ["//visibility:public"], |
| exports = [ |
| "%s//:com_google_dagger_dagger_android" % repo_name, |
| ], |
| ) |
| |
| # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android |
| # buildifier: disable=native-android |
| native.android_library( |
| name = "dagger-android-support", |
| exported_plugins = [":dagger-android-processor"], |
| visibility = ["//visibility:public"], |
| exports = [ |
| ":dagger-android", |
| "%s//:com_google_dagger_dagger_android_support" % repo_name, |
| ], |
| ) |
| |
| native.java_plugin( |
| name = "dagger-android-processor", |
| generates_api = 1, |
| processor_class = "dagger.android.processor.AndroidProcessor", |
| deps = [ |
| "%s//:com_google_dagger_dagger_android_processor" % repo_name, |
| ], |
| ) |
| |
| # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#unnamed-macro |
| # buildifier: disable=unnamed-macro |
| def hilt_android_rules(repo_name = "@maven"): |
| """Defines the Hilt Android targets with proper exported dependencies and plugins. |
| |
| The targets will be of the form ":<artifact-id>". |
| |
| Args: |
| repo_name: The name of the dependency repository (default is "@maven"). |
| """ |
| |
| # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android |
| # buildifier: disable=native-android |
| native.android_library( |
| name = "hilt-android", |
| exported_plugins = [ |
| ":hilt_dagger_compiler", |
| ":hilt_android_entry_point_processor", |
| ":hilt_aggregated_deps_processor", |
| ":hilt_alias_of_processor", |
| ":hilt_define_component_processor", |
| ":hilt_generates_root_input_processor", |
| ":hilt_originating_element_processor", |
| ":hilt_root_processor", |
| ":hilt_view_model_processor", |
| ], |
| visibility = ["//visibility:public"], |
| exports = [ |
| "%s//:com_google_dagger_dagger" % repo_name, # For Dagger APIs |
| "%s//:javax_inject_javax_inject" % repo_name, # For @Inject |
| "%s//:androidx_annotation_annotation" % repo_name, # For @CallSuper |
| "%s//:com_google_dagger_hilt_android" % repo_name, |
| "%s//:javax_annotation_jsr250_api" % repo_name, # For @Generated |
| ], |
| ) |
| |
| # This target is same as dagger-compiler, but we're redefining it here |
| # so that users don't have to call dagger_rules() first. |
| native.java_plugin( |
| name = "hilt_dagger_compiler", |
| generates_api = 1, |
| processor_class = "dagger.internal.codegen.ComponentProcessor", |
| deps = [ |
| "%s//:com_google_dagger_dagger_compiler" % repo_name, |
| ], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_android_entry_point_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.android.processor.internal.androidentrypoint.AndroidEntryPointProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_aggregated_deps_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_alias_of_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.processor.internal.aliasof.AliasOfProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_define_component_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.processor.internal.definecomponent.DefineComponentProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_generates_root_input_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.processor.internal.generatesrootinput.GeneratesRootInputProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_originating_element_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.processor.internal.originatingelement.OriginatingElementProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_root_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.processor.internal.root.RootProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_view_model_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.android.processor.internal.viewmodel.ViewModelProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| # https://github.com/bazelbuild/buildtools/blob/master/WARNINGS.md#native-android |
| # buildifier: disable=native-android |
| native.android_library( |
| name = "hilt-android-testing", |
| testonly = 1, |
| exported_plugins = [ |
| ":hilt_bind_value_processor", |
| ":hilt_custom_test_application_processor", |
| ":hilt_testroot_processor", |
| ":hilt_uninstall_modules_processor", |
| ], |
| visibility = ["//visibility:public"], |
| exports = [ |
| ":hilt-android", |
| "%s//:androidx_test_core" % repo_name, # For ApplicationProvider |
| "%s//:com_google_dagger_hilt_android_testing" % repo_name, |
| ], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_bind_value_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.android.processor.internal.bindvalue.BindValueProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_custom_test_application_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.android.processor.internal.customtestapplication.CustomTestApplicationProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_testroot_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.android.processor.internal.testroot.TestRootProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |
| |
| native.java_plugin( |
| name = "hilt_uninstall_modules_processor", |
| generates_api = 1, |
| processor_class = "dagger.hilt.android.processor.internal.uninstallmodules.UninstallModulesProcessor", |
| deps = ["%s//:com_google_dagger_hilt_android_compiler" % repo_name], |
| ) |