ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 1 | # Dagger |
Jesse Wilson | 70eee48 | 2012-06-25 12:29:15 -0700 | [diff] [blame] | 2 | |
cpovirk | 3a68b06 | 2018-08-20 09:54:35 -0700 | [diff] [blame] | 3 | [![Maven Central][mavenbadge-svg]][mavencentral] |
shaunkawano | cb4b3ef | 2016-07-28 12:06:37 -0700 | [diff] [blame] | 4 | |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 5 | A fast dependency injector for Java and Android. |
Jesse Wilson | aadda23 | 2012-08-09 19:25:52 -0400 | [diff] [blame] | 6 | |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 7 | Dagger is a compile-time framework for dependency injection. It uses no |
| 8 | reflection or runtime bytecode generation, does all its analysis at |
| 9 | compile-time, and generates plain Java source code. |
Christian Edward Gruber | 803309b | 2013-08-20 12:07:35 -0700 | [diff] [blame] | 10 | |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 11 | Dagger is actively maintained by the same team that works on [Guava]. Snapshot |
| 12 | releases are auto-deployed to Sonatype's central Maven repository on every clean |
| 13 | build with the version `HEAD-SNAPSHOT`. The current version builds upon previous |
| 14 | work done at [Square][square]. |
Christian Edward Gruber | 40a5b39 | 2014-11-14 10:09:53 -0800 | [diff] [blame] | 15 | |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 16 | ## Documentation |
Christian Edward Gruber | 24916c6 | 2014-10-17 13:37:19 -0700 | [diff] [blame] | 17 | |
Christian Edward Gruber | ddbe7f1 | 2015-04-07 18:49:47 -0700 | [diff] [blame] | 18 | You can [find the dagger documentation here][website] which has extended usage |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 19 | instructions and other useful information. More detailed information can be |
| 20 | found in the [API documentation][latestapi]. |
Christian Edward Gruber | 24916c6 | 2014-10-17 13:37:19 -0700 | [diff] [blame] | 21 | |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 22 | You can also learn more from [the original proposal][proposal], |
cgruber | a7e6285 | 2015-05-26 16:01:02 -0700 | [diff] [blame] | 23 | [this talk by Greg Kick][gaktalk], and on the dagger-discuss@googlegroups.com |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 24 | mailing list. |
Jesse Wilson | aadda23 | 2012-08-09 19:25:52 -0400 | [diff] [blame] | 25 | |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 26 | ## Installation |
Jesse Wilson | aadda23 | 2012-08-09 19:25:52 -0400 | [diff] [blame] | 27 | |
ronshapiro | 8ab63f1 | 2018-01-16 08:40:08 -0800 | [diff] [blame] | 28 | ### Bazel |
| 29 | |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 30 | First, import the Dagger repository into your `WORKSPACE` file using |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 31 | [`http_archive`][bazel-external-deps]. |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 32 | |
| 33 | Note: The `http_archive` must point to a tagged release of Dagger, not just any |
| 34 | commit. The version of the Dagger artifacts will match the version of the tagged |
| 35 | release. |
ronshapiro | 8ab63f1 | 2018-01-16 08:40:08 -0800 | [diff] [blame] | 36 | |
| 37 | ```python |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 38 | # Top-level WORKSPACE file |
| 39 | |
bcorso | d7fc5ee | 2020-06-18 17:32:20 -0700 | [diff] [blame] | 40 | load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") |
| 41 | |
| 42 | DAGGER_TAG = "2.28.1" |
bcorso | 7b83fc7 | 2020-06-23 21:24:15 -0700 | [diff] [blame] | 43 | DAGGER_SHA = "9e69ab2f9a47e0f74e71fe49098bea908c528aa02fa0c5995334447b310d0cdd" |
ronshapiro | 8ab63f1 | 2018-01-16 08:40:08 -0800 | [diff] [blame] | 44 | http_archive( |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 45 | name = "dagger", |
bcorso | d7fc5ee | 2020-06-18 17:32:20 -0700 | [diff] [blame] | 46 | strip_prefix = "dagger-dagger-%s" % DAGGER_TAG, |
| 47 | sha256 = DAGGER_SHA, |
| 48 | urls = ["https://github.com/google/dagger/archive/dagger-%s.zip" % DAGGER_TAG], |
ronshapiro | 8ab63f1 | 2018-01-16 08:40:08 -0800 | [diff] [blame] | 49 | ) |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 50 | ``` |
| 51 | |
| 52 | Next you will need to setup targets that export the proper dependencies |
| 53 | and plugins. Follow the sections below to setup the dependencies you need. |
| 54 | |
| 55 | #### Dagger Setup |
| 56 | |
| 57 | First, load the Dagger artifacts and repositories, and add them to your list of |
| 58 | [`maven_install`] artifacts. |
| 59 | |
| 60 | ```python |
| 61 | # Top-level WORKSPACE file |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 62 | |
| 63 | load("@dagger//:workspace_defs.bzl", "DAGGER_ARTIFACTS", "DAGGER_REPOSITORIES") |
| 64 | |
| 65 | maven_install( |
| 66 | artifacts = DAGGER_ARTIFACTS + [...], |
| 67 | repositories = DAGGER_REPOSITORIES + [...], |
| 68 | ) |
| 69 | ``` |
| 70 | |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 71 | Next, load and call [`dagger_rules`](https://github.com/google/dagger/blob/master/workspace_defs.bzl) |
| 72 | in your top-level `BUILD` file: |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 73 | |
| 74 | ```python |
| 75 | # Top-level BUILD file |
| 76 | |
| 77 | load("@dagger//:workspace_defs.bzl", "dagger_rules") |
| 78 | |
| 79 | dagger_rules() |
| 80 | ``` |
| 81 | |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 82 | This will add the following Dagger build targets: |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 83 | (Note that these targets already export all of the dependencies and processors |
| 84 | they need). |
| 85 | |
| 86 | ```python |
| 87 | deps = [ |
| 88 | ":dagger", # For Dagger |
| 89 | ":dagger-spi", # For Dagger SPI |
| 90 | ":dagger-producers", # For Dagger Producers |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 91 | ] |
| 92 | ``` |
| 93 | |
| 94 | #### Dagger Android Setup |
| 95 | |
| 96 | First, load the Dagger Android artifacts and repositories, and add them to your |
| 97 | list of [`maven_install`] artifacts. |
| 98 | |
| 99 | ```python |
| 100 | # Top-level WORKSPACE file |
| 101 | |
| 102 | load( |
| 103 | "@dagger//:workspace_defs.bzl", |
| 104 | "DAGGER_ANDROID_ARTIFACTS", |
| 105 | "DAGGER_ANDROID_REPOSITORIES" |
| 106 | ) |
| 107 | |
| 108 | maven_install( |
| 109 | artifacts = DAGGER_ANDROID_ARTIFACTS + [...], |
| 110 | repositories = DAGGER_ANDROID_REPOSITORIES + [...], |
| 111 | ) |
| 112 | ``` |
| 113 | |
| 114 | Next, load and call [`dagger_android_rules`](https://github.com/google/dagger/blob/master/workspace_defs.bzl) |
| 115 | in your top-level `BUILD` file: |
| 116 | |
| 117 | ```python |
| 118 | # Top-level BUILD file |
| 119 | |
| 120 | load("@dagger//:workspace_defs.bzl", "dagger_android_rules") |
| 121 | |
| 122 | dagger_android_rules() |
| 123 | ``` |
| 124 | |
| 125 | This will add the following Dagger Android build targets: |
| 126 | (Note that these targets already export all of the dependencies and processors |
| 127 | they need). |
| 128 | |
| 129 | ```python |
| 130 | deps = [ |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 131 | ":dagger-android", # For Dagger Android |
| 132 | ":dagger-android-support", # For Dagger Android (Support) |
bcorso | bc6f9a9 | 2020-06-17 16:29:02 -0700 | [diff] [blame] | 133 | ] |
| 134 | ``` |
| 135 | |
| 136 | #### Hilt Android Setup |
| 137 | |
| 138 | First, load the Hilt Android artifacts and repositories, and add them to your |
| 139 | list of [`maven_install`] artifacts. |
| 140 | |
| 141 | ```python |
| 142 | # Top-level WORKSPACE file |
| 143 | |
| 144 | load( |
| 145 | "@dagger//:workspace_defs.bzl", |
| 146 | "HILT_ANDROID_ARTIFACTS", |
| 147 | "HILT_ANDROID_REPOSITORIES" |
| 148 | ) |
| 149 | |
| 150 | maven_install( |
| 151 | artifacts = HILT_ANDROID_ARTIFACTS + [...], |
| 152 | repositories = HILT_ANDROID_REPOSITORIES + [...], |
| 153 | ) |
| 154 | ``` |
| 155 | |
| 156 | Next, load and call [`hilt_android_rules`](https://github.com/google/dagger/blob/master/workspace_defs.bzl) |
| 157 | in your top-level `BUILD` file: |
| 158 | |
| 159 | ```python |
| 160 | # Top-level BUILD file |
| 161 | |
| 162 | load("@dagger//:workspace_defs.bzl", "hilt_android_rules") |
| 163 | |
| 164 | hilt_android_rules() |
| 165 | ``` |
| 166 | |
| 167 | This will add the following Hilt Android build targets: |
| 168 | (Note that these targets already export all of the dependencies and processors |
| 169 | they need). |
| 170 | |
| 171 | ```python |
| 172 | deps = [ |
bcorso | 51c9a1d | 2020-06-08 17:40:40 -0700 | [diff] [blame] | 173 | ":hilt-android", # For Hilt Android |
| 174 | ":hilt-android-testing", # For Hilt Android Testing |
| 175 | ] |
ronshapiro | 8ab63f1 | 2018-01-16 08:40:08 -0800 | [diff] [blame] | 176 | ``` |
| 177 | |
| 178 | ### Other build systems |
| 179 | |
shaunkawano | cb4b3ef | 2016-07-28 12:06:37 -0700 | [diff] [blame] | 180 | You will need to include the `dagger-2.x.jar` in your application's runtime. |
Christian Edward Gruber | ddbe7f1 | 2015-04-07 18:49:47 -0700 | [diff] [blame] | 181 | In order to activate code generation and generate implementations to manage |
shaunkawano | cb4b3ef | 2016-07-28 12:06:37 -0700 | [diff] [blame] | 182 | your graph you will need to include `dagger-compiler-2.x.jar` in your build |
Christian Edward Gruber | ddbe7f1 | 2015-04-07 18:49:47 -0700 | [diff] [blame] | 183 | at compile time. |
Jesse Wilson | aadda23 | 2012-08-09 19:25:52 -0400 | [diff] [blame] | 184 | |
ronshapiro | 8ab63f1 | 2018-01-16 08:40:08 -0800 | [diff] [blame] | 185 | #### Maven |
kkovach | bee27f0 | 2016-06-28 07:11:56 -0700 | [diff] [blame] | 186 | |
cgruber | a7e6285 | 2015-05-26 16:01:02 -0700 | [diff] [blame] | 187 | In a Maven project, include the `dagger` artifact in the dependencies section |
ronshapiro | 7ef7121 | 2017-05-02 14:59:24 -0700 | [diff] [blame] | 188 | of your `pom.xml` and the `dagger-compiler` artifact as an |
| 189 | `annotationProcessorPaths` value of the `maven-compiler-plugin`: |
Thomas Broyer | 24a47a7 | 2017-05-02 11:32:49 -0700 | [diff] [blame] | 190 | |
| 191 | ```xml |
| 192 | <dependencies> |
| 193 | <dependency> |
| 194 | <groupId>com.google.dagger</groupId> |
| 195 | <artifactId>dagger</artifactId> |
| 196 | <version>2.x</version> |
| 197 | </dependency> |
| 198 | </dependencies> |
| 199 | <build> |
| 200 | <plugins> |
| 201 | <plugin> |
| 202 | <groupId>org.apache.maven.plugins</groupId> |
| 203 | <artifactId>maven-compiler-plugin</artifactId> |
| 204 | <version>3.6.1</version> |
| 205 | <configuration> |
| 206 | <annotationProcessorPaths> |
| 207 | <path> |
| 208 | <groupId>com.google.dagger</groupId> |
| 209 | <artifactId>dagger-compiler</artifactId> |
| 210 | <version>2.x</version> |
| 211 | </path> |
| 212 | </annotationProcessorPaths> |
| 213 | </configuration> |
| 214 | </plugin> |
| 215 | </plugins> |
| 216 | </build> |
| 217 | ``` |
| 218 | |
ronshapiro | 7ef7121 | 2017-05-02 14:59:24 -0700 | [diff] [blame] | 219 | If you are using a version of the `maven-compiler-plugin` lower than `3.5`, add |
ronshapiro | 43498a6 | 2017-05-03 11:28:04 -0700 | [diff] [blame] | 220 | the `dagger-compiler` artifact with the `provided` scope: |
cgruber | 92f9d9f | 2017-08-10 09:57:04 -0700 | [diff] [blame] | 221 | |
ronshapiro | 7ef7121 | 2017-05-02 14:59:24 -0700 | [diff] [blame] | 222 | ```xml |
| 223 | <dependencies> |
| 224 | <dependency> |
| 225 | <groupId>com.google.dagger</groupId> |
| 226 | <artifactId>dagger</artifactId> |
| 227 | <version>2.x</version> |
| 228 | </dependency> |
| 229 | <dependency> |
| 230 | <groupId>com.google.dagger</groupId> |
| 231 | <artifactId>dagger-compiler</artifactId> |
| 232 | <version>2.x</version> |
| 233 | <scope>provided</scope> |
| 234 | </dependency> |
| 235 | </dependencies> |
| 236 | ``` |
| 237 | |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 238 | If you use the beta `dagger-producers` extension (which supplies |
| 239 | parallelizable execution graphs), then add this to your maven configuration: |
Christian Edward Gruber | ddbe7f1 | 2015-04-07 18:49:47 -0700 | [diff] [blame] | 240 | |
| 241 | ```xml |
| 242 | <dependencies> |
| 243 | <dependency> |
| 244 | <groupId>com.google.dagger</groupId> |
| 245 | <artifactId>dagger-producers</artifactId> |
shaunkawano | cb4b3ef | 2016-07-28 12:06:37 -0700 | [diff] [blame] | 246 | <version>2.x</version> |
Christian Edward Gruber | ddbe7f1 | 2015-04-07 18:49:47 -0700 | [diff] [blame] | 247 | </dependency> |
| 248 | </dependencies> |
| 249 | ``` |
| 250 | |
ronshapiro | c7b8359 | 2019-08-23 08:49:53 -0700 | [diff] [blame] | 251 | #### Gradle |
kkovach | bee27f0 | 2016-06-28 07:11:56 -0700 | [diff] [blame] | 252 | ```groovy |
kkovach | bee27f0 | 2016-06-28 07:11:56 -0700 | [diff] [blame] | 253 | // Add Dagger dependencies |
| 254 | dependencies { |
Eric Chang | 9465a0e | 2021-01-11 13:58:15 -0800 | [diff] [blame] | 255 | implementation 'com.google.dagger:dagger:2.x' |
Ron Shapiro | bcef45b | 2016-11-03 15:32:10 -0400 | [diff] [blame] | 256 | annotationProcessor 'com.google.dagger:dagger-compiler:2.x' |
kkovach | bee27f0 | 2016-06-28 07:11:56 -0700 | [diff] [blame] | 257 | } |
| 258 | ``` |
Christian Edward Gruber | ddbe7f1 | 2015-04-07 18:49:47 -0700 | [diff] [blame] | 259 | |
ronshapiro | edc12ed | 2017-04-06 13:49:04 -0700 | [diff] [blame] | 260 | If you're using classes in `dagger.android` you'll also want to include: |
| 261 | |
| 262 | ```groovy |
Eric Chang | 9465a0e | 2021-01-11 13:58:15 -0800 | [diff] [blame] | 263 | implementation 'com.google.dagger:dagger-android:2.x' |
| 264 | implementation 'com.google.dagger:dagger-android-support:2.x' // if you use the support libraries |
ronshapiro | edc12ed | 2017-04-06 13:49:04 -0700 | [diff] [blame] | 265 | annotationProcessor 'com.google.dagger:dagger-android-processor:2.x' |
| 266 | ``` |
| 267 | |
ronshapiro | c7b8359 | 2019-08-23 08:49:53 -0700 | [diff] [blame] | 268 | Notes: |
| 269 | |
Eric Chang | 9465a0e | 2021-01-11 13:58:15 -0800 | [diff] [blame] | 270 | - We use `implementation` instead of `api` for better compilation performance. |
ronshapiro | c7b8359 | 2019-08-23 08:49:53 -0700 | [diff] [blame] | 271 | - See the [Gradle documentation][gradle-api-implementation] for more |
| 272 | information on how to select appropriately, and the [Android Gradle |
| 273 | plugin documentation][gradle-api-implementation-android] for Android |
| 274 | projects. |
| 275 | - For Kotlin projects, use [`kapt`] in place of `annotationProcessor`. |
Ron Shapiro | bcef45b | 2016-11-03 15:32:10 -0400 | [diff] [blame] | 276 | |
ronshapiro | 9ad2f3d | 2016-12-19 09:07:31 -0800 | [diff] [blame] | 277 | If you're using the [Android Databinding library][databinding], you may want to |
| 278 | increase the number of errors that `javac` will print. When Dagger prints an |
| 279 | error, databinding compilation will halt and sometimes print more than 100 |
Said Tahsin Dane | 8c81795 | 2017-07-04 08:24:25 -0700 | [diff] [blame] | 280 | errors, which is the default amount for `javac`. For more information, see |
| 281 | [Issue 306](https://github.com/google/dagger/issues/306). |
ronshapiro | 9ad2f3d | 2016-12-19 09:07:31 -0800 | [diff] [blame] | 282 | |
| 283 | ```groovy |
| 284 | gradle.projectsEvaluated { |
| 285 | tasks.withType(JavaCompile) { |
| 286 | options.compilerArgs << "-Xmaxerrs" << "500" // or whatever number you want |
| 287 | } |
| 288 | } |
| 289 | ``` |
| 290 | |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 291 | ### Resources |
Christian Edward Gruber | 97cc761 | 2014-10-29 15:52:47 -0700 | [diff] [blame] | 292 | |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 293 | * [Documentation][website] |
| 294 | * [Javadocs][latestapi] |
| 295 | * [GitHub Issues] |
Christian Edward Gruber | 97cc761 | 2014-10-29 15:52:47 -0700 | [diff] [blame] | 296 | |
| 297 | |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 298 | If you do not use maven, gradle, ivy, or other build systems that consume |
| 299 | maven-style binary artifacts, they can be downloaded directly via the |
cpovirk | 3a68b06 | 2018-08-20 09:54:35 -0700 | [diff] [blame] | 300 | [Maven Central Repository][mavencentral]. |
Christian Edward Gruber | f0de394 | 2012-10-17 13:05:41 -0400 | [diff] [blame] | 301 | |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 302 | Developer snapshots are available from Sonatype's |
| 303 | [snapshot repository][dagger-snap], and are built on a clean build of |
| 304 | the GitHub project's master branch. |
Jesse Wilson | bcc571d | 2012-08-06 17:59:43 -0400 | [diff] [blame] | 305 | |
ronshapiro | b7ce1dc | 2017-10-23 08:11:52 -0700 | [diff] [blame] | 306 | ## Building Dagger |
| 307 | |
Pierre-Yves Ricau | 19f768d | 2019-04-12 12:43:06 -0700 | [diff] [blame] | 308 | See [the CONTRIBUTING.md docs][Building Dagger]. |
ronshapiro | b7ce1dc | 2017-10-23 08:11:52 -0700 | [diff] [blame] | 309 | |
cgruber | 4ab5846 | 2016-03-11 12:41:52 -0800 | [diff] [blame] | 310 | ## License |
Jesse Wilson | 70eee48 | 2012-06-25 12:29:15 -0700 | [diff] [blame] | 311 | |
isogai.shiraji | 611ff4f | 2016-08-24 08:16:19 -0700 | [diff] [blame] | 312 | Copyright 2012 The Dagger Authors |
Jesse Wilson | 70eee48 | 2012-06-25 12:29:15 -0700 | [diff] [blame] | 313 | |
| 314 | Licensed under the Apache License, Version 2.0 (the "License"); |
| 315 | you may not use this file except in compliance with the License. |
| 316 | You may obtain a copy of the License at |
| 317 | |
| 318 | http://www.apache.org/licenses/LICENSE-2.0 |
| 319 | |
| 320 | Unless required by applicable law or agreed to in writing, software |
| 321 | distributed under the License is distributed on an "AS IS" BASIS, |
| 322 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 323 | See the License for the specific language governing permissions and |
| 324 | limitations under the License. |
Jesse Wilson | bcc571d | 2012-08-06 17:59:43 -0400 | [diff] [blame] | 325 | |
ronshapiro | b7ce1dc | 2017-10-23 08:11:52 -0700 | [diff] [blame] | 326 | [`bazel`]: https://bazel.build |
ronshapiro | 8ab63f1 | 2018-01-16 08:40:08 -0800 | [diff] [blame] | 327 | [bazel-external-deps]: https://docs.bazel.build/versions/master/external.html#depending-on-other-bazel-projects |
bcorso | b181de5 | 2020-06-11 14:22:31 -0700 | [diff] [blame] | 328 | [`maven_install`]: https://github.com/bazelbuild/rules_jvm_external#exporting-and-consuming-artifacts-from-external-repositories |
Pierre-Yves Ricau | 19f768d | 2019-04-12 12:43:06 -0700 | [diff] [blame] | 329 | [Building Dagger]: CONTRIBUTING.md#building-dagger |
ronshapiro | 9ad2f3d | 2016-12-19 09:07:31 -0800 | [diff] [blame] | 330 | [dagger-snap]: https://oss.sonatype.org/content/repositories/snapshots/com/google/dagger/ |
dpb | 5367767 | 2017-03-14 11:33:48 -0700 | [diff] [blame] | 331 | [databinding]: https://developer.android.com/topic/libraries/data-binding/ |
ronshapiro | 9ad2f3d | 2016-12-19 09:07:31 -0800 | [diff] [blame] | 332 | [gaktalk]: https://www.youtube.com/watch?v=oK_XtfXPkqw |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 333 | [GitHub Issues]: https://github.com/google/dagger/issues |
ronshapiro | c7b8359 | 2019-08-23 08:49:53 -0700 | [diff] [blame] | 334 | [gradle-api-implementation]: https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation |
| 335 | [gradle-api-implementation-android]: https://developer.android.com/studio/build/dependencies#dependency_configurations |
ronshapiro | e2c18ea | 2019-06-03 12:45:51 -0700 | [diff] [blame] | 336 | [Guava]: https://github.com/google/guava |
ronshapiro | c7b8359 | 2019-08-23 08:49:53 -0700 | [diff] [blame] | 337 | [`kapt`]: https://kotlinlang.org/docs/reference/kapt.html |
ronshapiro | 072c477 | 2019-05-28 07:55:21 -0700 | [diff] [blame] | 338 | [latestapi]: https://dagger.dev/api/latest/ |
ronshapiro | 9ad2f3d | 2016-12-19 09:07:31 -0800 | [diff] [blame] | 339 | [mavenbadge-svg]: https://maven-badges.herokuapp.com/maven-central/com.google.dagger/dagger/badge.svg |
cpovirk | 3a68b06 | 2018-08-20 09:54:35 -0700 | [diff] [blame] | 340 | [mavencentral]: https://search.maven.org/artifact/com.google.dagger/dagger |
ronshapiro | 9ad2f3d | 2016-12-19 09:07:31 -0800 | [diff] [blame] | 341 | [project]: http://github.com/google/dagger/ |
| 342 | [proposal]: https://github.com/square/dagger/issues/366 |
| 343 | [square]: http://github.com/square/dagger/ |
ronshapiro | 072c477 | 2019-05-28 07:55:21 -0700 | [diff] [blame] | 344 | [website]: https://dagger.dev |