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/extension", 46 "//java/dagger/internal/codegen/javapoet", 47 "//java/dagger/internal/codegen/kotlin", 48 "//java/dagger/internal/codegen/langmodel", 49 "//java/dagger/internal/codegen/validation", 50 "//java/dagger/internal/codegen/writing", 51 "//java/dagger/internal/codegen/xprocessing", 52 "//java/dagger/spi", 53 "//third_party/java/auto:common", 54 "//third_party/java/auto:service", 55 "//third_party/java/auto:value", 56 "//third_party/java/error_prone:annotations", 57 "//third_party/java/google_java_format", 58 "//third_party/java/guava/base", 59 "//third_party/java/guava/collect", 60 "//third_party/java/incap", 61 "//third_party/java/javapoet", 62 "//third_party/java/jsr330_inject", 63 "@bazel_tools//tools/jdk:langtools-neverlink", 64 ], 65) 66 67java_library( 68 name = "package_info", 69 srcs = ["package-info.java"], 70 tags = ["maven:merged"], 71 deps = ["//third_party/java/error_prone:annotations"], 72) 73 74gen_maven_artifact( 75 name = "artifact", 76 artifact_coordinates = "com.google.dagger:dagger-compiler:" + POM_VERSION, 77 artifact_name = "Dagger Compiler", 78 artifact_target = ":processor", 79 artifact_target_libs = [ 80 ":package_info", 81 "//java/dagger/internal/codegen/base", 82 "//java/dagger/internal/codegen/base:shared", 83 "//java/dagger/internal/codegen/binding", 84 "//java/dagger/internal/codegen/bindinggraphvalidation", 85 "//java/dagger/internal/codegen/compileroption", 86 "//java/dagger/internal/codegen/componentgenerator", 87 "//java/dagger/internal/codegen/javapoet", 88 "//java/dagger/internal/codegen/kotlin", 89 "//java/dagger/internal/codegen/langmodel", 90 "//java/dagger/internal/codegen/validation", 91 "//java/dagger/internal/codegen/writing", 92 ], 93 artifact_target_maven_deps = [ 94 "com.google.auto:auto-common", 95 "com.google.code.findbugs:jsr305", 96 "com.google.dagger:dagger-producers", 97 "com.google.dagger:dagger-spi", 98 "com.google.dagger:dagger", 99 "com.google.googlejavaformat:google-java-format", 100 "com.google.guava:failureaccess", 101 "com.google.guava:guava", 102 "com.squareup:javapoet", 103 "javax.inject:javax.inject", 104 "net.ltgt.gradle.incap:incap", 105 "org.checkerframework:checker-compat-qual", 106 "org.jetbrains.kotlin:kotlin-stdlib", 107 "org.jetbrains.kotlin:kotlin-stdlib-jdk8", 108 "org.jetbrains.kotlinx:kotlinx-metadata-jvm", 109 ], 110 javadoc_root_packages = ["dagger.internal.codegen"], 111 # The javadocs should only include ComponentProcessor.java, since that is the only class used 112 # externally. Specifically, ComponentProcessor.forTesting() is required for testing SPI plugins. 113 javadoc_srcs = ["ComponentProcessor.java"], 114 # The shaded deps are inherited from dagger spi. For the shaded rules see util/deploy-dagger.sh 115) 116 117java_plugin( 118 name = "component-codegen", 119 generates_api = 1, 120 output_licenses = ["unencumbered"], 121 processor_class = "dagger.internal.codegen.ComponentProcessor", 122 tags = [ 123 "annotation=dagger.Component;" + 124 "genclass=${package}.Dagger${outerclasses}${classname}", 125 "annotation=dagger.producers.ProductionComponent;" + 126 "genclass=${package}.Dagger${outerclasses}${classname}", 127 "annotation=dagger.MapKey;" + 128 "genclass=${package}.${outerclasses}${classname}Creator", 129 ], 130 deps = [":processor"], 131) 132