Name Date Size #Lines LOC

..--

.allstar/H25-Apr-2025-125

.github/H25-Apr-2025-724650

android-annotation-stubs/H25-Apr-2025-229132

examples/H25-Apr-2025-1,330758

gwt/H25-Apr-2025-9353

java/dagger/H25-Apr-2025-96,63759,658

javatests/H25-Apr-2025-146,250107,178

third_party/H25-Apr-2025-985825

tools/H25-Apr-2025-1,2831,086

util/H25-Apr-2025-1,085775

.bazelrcH A D25-Apr-2025270 97

.gitignoreH A D25-Apr-2025247 3826

AUTHORSH A D25-Apr-2025329 88

Android.bpH A D25-Apr-202516.3 KiB517463

BUILDH A D25-Apr-20254.3 KiB142128

CHANGELOG.mdH A D25-Apr-2025212 75

CONTRIBUTING.mdH A D25-Apr-20253.9 KiB8266

LICENSEH A D25-Apr-202511.1 KiB203169

LICENSE.txtH A D25-Apr-202511.1 KiB203169

METADATAH A D25-Apr-2025560 2119

MODULE_LICENSE_APACHE2HD25-Apr-20250

OWNERSH A D25-Apr-202553 42

README.mdH A D25-Apr-202510.2 KiB343265

WORKSPACEH A D25-Apr-202510.8 KiB283230

build_defs.bzlH A D25-Apr-2025836 2620

jarjar-rules.txtH A D25-Apr-2025306 75

test_defs.bzlH A D25-Apr-202511.4 KiB358326

workspace_defs.bzlH A D25-Apr-202511.5 KiB309268

README.md

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