1# Copyright (C) 2017 The Dagger Authors. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15# Description: 16# A JSR-330 compliant dependency injection system for android and java 17 18load("@rules_java//java:defs.bzl", "java_library", "java_plugin") 19load( 20 "//:build_defs.bzl", 21 "POM_VERSION", 22) 23load("//tools:maven.bzl", "gen_maven_artifact") 24 25package(default_visibility = ["//:src"]) 26 27java_library( 28 name = "processor", 29 srcs = glob( 30 ["*.java"], 31 exclude = ["package-info.java"], 32 ), 33 plugins = [ 34 "//java/dagger/internal/codegen/bootstrap", 35 ], 36 tags = ["maven_coordinates=com.google.dagger:dagger-compiler:" + POM_VERSION], 37 deps = [ 38 ":package_info", 39 "//java/dagger:core", 40 "//java/dagger/internal/codegen/base", 41 "//java/dagger/internal/codegen/binding", 42 "//java/dagger/internal/codegen/bindinggraphvalidation", 43 "//java/dagger/internal/codegen/compileroption", 44 "//java/dagger/internal/codegen/componentgenerator", 45 "//java/dagger/internal/codegen/kotlin", 46 "//java/dagger/internal/codegen/processingstep", 47 "//java/dagger/internal/codegen/validation", 48 "//java/dagger/internal/codegen/writing", 49 "//java/dagger/internal/codegen/xprocessing", 50 "//java/dagger/spi", 51 "//third_party/java/auto:service", 52 "//third_party/java/error_prone:annotations", 53 "//third_party/java/google_java_format", 54 "//third_party/java/guava/collect", 55 "//third_party/java/incap", 56 "@maven//:com_google_devtools_ksp_symbol_processing_api", 57 ], 58) 59 60java_library( 61 name = "package_info", 62 srcs = ["package-info.java"], 63 tags = ["maven:merged"], 64 deps = ["//third_party/java/error_prone:annotations"], 65) 66 67gen_maven_artifact( 68 name = "artifact", 69 artifact_coordinates = "com.google.dagger:dagger-compiler:" + POM_VERSION, 70 artifact_name = "Dagger Compiler", 71 artifact_target = ":processor", 72 artifact_target_libs = [ 73 ":package_info", 74 "//java/dagger/internal/codegen/base", 75 "//java/dagger/internal/codegen/base:shared", 76 "//java/dagger/internal/codegen/binding", 77 "//java/dagger/internal/codegen/bindinggraphvalidation", 78 "//java/dagger/internal/codegen/compileroption", 79 "//java/dagger/internal/codegen/componentgenerator", 80 "//java/dagger/internal/codegen/javapoet", 81 "//java/dagger/internal/codegen/kotlin", 82 "//java/dagger/internal/codegen/langmodel", 83 "//java/dagger/internal/codegen/model", 84 "//java/dagger/internal/codegen/processingstep", 85 "//java/dagger/internal/codegen/validation", 86 "//java/dagger/internal/codegen/writing", 87 "//java/dagger/internal/codegen/xprocessing", 88 ], 89 artifact_target_maven_deps = [ 90 "com.google.code.findbugs:jsr305", 91 "com.google.dagger:dagger-spi", 92 "com.google.dagger:dagger", 93 "com.google.devtools.ksp:symbol-processing-api", 94 "com.google.googlejavaformat:google-java-format", 95 "com.google.guava:failureaccess", 96 "com.google.guava:guava", 97 "com.squareup:javapoet", 98 "com.squareup:kotlinpoet", 99 "javax.inject:javax.inject", 100 "net.ltgt.gradle.incap:incap", 101 "org.checkerframework:checker-compat-qual", 102 "org.jetbrains.kotlin:kotlin-stdlib", 103 ], 104 javadoc_root_packages = ["dagger.internal.codegen"], 105 # The javadocs should only include ComponentProcessor.java, since that is the only class used 106 # externally. Specifically, ComponentProcessor.forTesting() is required for testing SPI plugins. 107 javadoc_srcs = ["ComponentProcessor.java"], 108 # The shaded deps are inherited from dagger spi. For the shaded rules see util/deploy-dagger.sh 109) 110 111java_plugin( 112 name = "component-codegen", 113 generates_api = 1, 114 output_licenses = ["unencumbered"], 115 processor_class = "dagger.internal.codegen.ComponentProcessor", 116 tags = [ 117 "annotation=dagger.Component;" + 118 "genclass=${package}.Dagger${outerclasses}${classname}", 119 "annotation=dagger.producers.ProductionComponent;" + 120 "genclass=${package}.Dagger${outerclasses}${classname}", 121 "annotation=dagger.MapKey;" + 122 "genclass=${package}.${outerclasses}${classname}Creator", 123 ], 124 deps = [":processor"], 125) 126