Skip to content

Commit

Permalink
Add macros for Dagger users to easily import Dagger targets.
Browse files Browse the repository at this point in the history
RELNOTES=Update macro and README with instructions for Bazel users.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=315389535
  • Loading branch information
bcorso authored and cpovirk committed Jun 9, 2020
1 parent 5d63fcf commit 51c9a1d
Show file tree
Hide file tree
Showing 21 changed files with 342 additions and 31 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ dependency-reduced-pom.xml

gen-external-apklibs

/bazel-*
bazel-*

*.pyc

Expand Down
51 changes: 46 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,57 @@ mailing list.

### Bazel

If you build with `bazel`, follow the [`bazel` documentation for referencing
external projects][bazel-external-deps] to include Dagger in your build.
If you build with `bazel`, you will need to configure your top-level workspace
to access Dagger/Hilt targets that export the proper dependencies and plugins.

Given the following `WORKSPACE` definition, you can reference dagger via
`@com_google_dagger//:dagger_with_compiler` in your deps.
First, import the Dagger repository into your `WORKSPACE` file using
[`http_archive`][bazel-external-deps], load the `DAGGER_ARTIFACTS` and
`DAGGER_REPOSITORIES`, and add them to your list of [`maven_install`] artifacts.

Note: The `http_archive` must point to a tagged release of Dagger, not just any
commit. The version of the Dagger artifacts will match the version of the tagged
release.

```python
# Top-level WORKSPACE file

http_archive(
name = "com_google_dagger",
name = "dagger",
urls = ["https://github.com/google/dagger/archive/dagger-<version>.zip"],
)

load("@dagger//:workspace_defs.bzl", "DAGGER_ARTIFACTS", "DAGGER_REPOSITORIES")

maven_install(
artifacts = DAGGER_ARTIFACTS + [...],
repositories = DAGGER_REPOSITORIES + [...],
)
```

Next, load and call `dagger_rules` in your top-level `BUILD` file:

```python
# Top-level BUILD file

load("@dagger//:workspace_defs.bzl", "dagger_rules")

dagger_rules()
```

This will setup Dagger and Hilt build targets of the form `:<artifact_id>`.
(Note that these targets already export all of the dependencies and processors
they need).

```python
deps = [
":dagger", # For Dagger
":dagger-spi", # For Dagger SPI
":dagger-producers", # For Dagger Producers
":dagger-android", # For Dagger Android
":dagger-android-support", # For Dagger Android (Support)
":hilt-android", # For Hilt Android
":hilt-android-testing", # For Hilt Android Testing
]
```

### Other build systems
Expand Down Expand Up @@ -191,6 +231,7 @@ See [the CONTRIBUTING.md docs][Building Dagger].

[`bazel`]: https://bazel.build
[bazel-external-deps]: https://docs.bazel.build/versions/master/external.html#depending-on-other-bazel-projects
[`maven_install`](https://github.com/bazelbuild/rules_jvm_external#exporting-and-consuming-artifacts-from-external-repositories)
[Building Dagger]: CONTRIBUTING.md#building-dagger
[dagger-snap]: https://oss.sonatype.org/content/repositories/snapshots/com/google/dagger/
[databinding]: https://developer.android.com/topic/libraries/data-binding/
Expand Down
7 changes: 7 additions & 0 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.

# Declare the nested workspace so that the top-level workspace doesn't try to
# traverse it when calling `bazel build //...`
local_repository(
name = "examples_bazel",
path = "examples/bazel",
)

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
Expand Down
5 changes: 5 additions & 0 deletions build_defs.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,8 @@ SOURCE_7_TARGET_7 = [
"-target",
"1.7",
]

POM_VERSION = "${project.version}"

# DO NOT remove the comment on the next line. It's used in deploy-to-maven-central.sh
POM_VERSION_ALPHA = POM_VERSION #ALPHA_POSTFIX
3 changes: 2 additions & 1 deletion gwt/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@
# GWT-specific files for Dagger

load("@rules_java//java:defs.bzl", "java_library")
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load("//tools:maven.bzl", "pom_file")
load("//:build_defs.bzl", "POM_VERSION")

package(default_visibility = ["//:src"])

Expand Down
3 changes: 2 additions & 1 deletion java/dagger/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@ load("@rules_java//java:defs.bzl", "java_library")
load(
"//:build_defs.bzl",
"DOCLINT_HTML_AND_SYNTAX",
"POM_VERSION",
"SOURCE_7_TARGET_7",
)
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load("//tools:maven.bzl", "pom_file")
load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

package(default_visibility = ["//:src"])
Expand Down
3 changes: 2 additions & 1 deletion java/dagger/android/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ load(
"//:build_defs.bzl",
"DOCLINT_HTML_AND_SYNTAX",
"DOCLINT_REFERENCES",
"POM_VERSION",
"SOURCE_7_TARGET_7",
)
load("//tools:dejetify.bzl", "dejetified_library")
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load("//tools:maven.bzl", "pom_file")
load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

package(default_visibility = ["//:src"])
Expand Down
3 changes: 2 additions & 1 deletion java/dagger/android/processor/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ load(
"//:build_defs.bzl",
"DOCLINT_HTML_AND_SYNTAX",
"DOCLINT_REFERENCES",
"POM_VERSION",
)
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load("//tools:maven.bzl", "pom_file")
load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

package(default_visibility = ["//:src"])
Expand Down
8 changes: 6 additions & 2 deletions java/dagger/android/support/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,13 @@
# Description:
# Public Dagger API for Android that interacts with the Android support libraries

load("//:build_defs.bzl", "SOURCE_7_TARGET_7")
load(
"//:build_defs.bzl",
"POM_VERSION",
"SOURCE_7_TARGET_7",
)
load("//tools:dejetify.bzl", "dejetified_library")
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load("//tools:maven.bzl", "pom_file")
load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

package(default_visibility = ["//:src"])
Expand Down
9 changes: 7 additions & 2 deletions java/dagger/grpc/server/BUILD
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# A framework supporting Dagger-injected gRPC servers.

load("@rules_java//java:defs.bzl", "java_library")
load("//:build_defs.bzl", "DOCLINT_HTML_AND_SYNTAX", "DOCLINT_REFERENCES")
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load(
"//:build_defs.bzl",
"DOCLINT_HTML_AND_SYNTAX",
"DOCLINT_REFERENCES",
"POM_VERSION",
)
load("//tools:maven.bzl", "pom_file")
load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

package(default_visibility = ["//:src"])
Expand Down
8 changes: 6 additions & 2 deletions java/dagger/grpc/server/processor/BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
load("@rules_java//java:defs.bzl", "java_library", "java_plugin")
load("//:build_defs.bzl", "DOCLINT_HTML_AND_SYNTAX")
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load(
"//:build_defs.bzl",
"DOCLINT_HTML_AND_SYNTAX",
"POM_VERSION",
)
load("//tools:maven.bzl", "pom_file")
load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

package(default_visibility = ["//:src"])
Expand Down
4 changes: 2 additions & 2 deletions java/dagger/hilt/android/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

# Description:
# A library based on Hilt that provides standard components and automated injection for Android.

load("//tools:maven.bzl", "POM_VERSION_ALPHA", "gen_maven_artifact")
load("//:build_defs.bzl", "POM_VERSION_ALPHA")
load("//tools:maven.bzl", "gen_maven_artifact")

package(default_visibility = ["//:src"])

Expand Down
3 changes: 2 additions & 1 deletion java/dagger/hilt/android/processor/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
# Description:
# Hilt android processors.

load("//tools:maven.bzl", "POM_VERSION_ALPHA", "gen_maven_artifact")
load("//:build_defs.bzl", "POM_VERSION_ALPHA")
load("//tools:maven.bzl", "gen_maven_artifact")

package(default_visibility = ["//:src"])

Expand Down
3 changes: 2 additions & 1 deletion java/dagger/hilt/android/testing/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
# Description:
# Testing libraries for Hilt Android.

load("//tools:maven.bzl", "POM_VERSION_ALPHA", "gen_maven_artifact")
load("//:build_defs.bzl", "POM_VERSION_ALPHA")
load("//tools:maven.bzl", "gen_maven_artifact")

package(default_visibility = ["//:src"])

Expand Down
6 changes: 5 additions & 1 deletion java/dagger/internal/codegen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@
# A JSR-330 compliant dependency injection system for android and java

load("@rules_java//java:defs.bzl", "java_library", "java_plugin")
load("//tools:maven.bzl", "POM_VERSION", "gen_maven_artifact")
load(
"//:build_defs.bzl",
"POM_VERSION",
)
load("//tools:maven.bzl", "gen_maven_artifact")

package(default_visibility = ["//:src"])

Expand Down
3 changes: 2 additions & 1 deletion java/dagger/lint/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
# Description:
# Dagger Lint Rules

load("//tools:maven.bzl", "POM_VERSION", "gen_maven_artifact")
load("//:build_defs.bzl", "POM_VERSION")
load("//tools:maven.bzl", "gen_maven_artifact")
load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kt_jvm_library")

package(default_visibility = ["//:src"])
Expand Down
3 changes: 2 additions & 1 deletion java/dagger/producers/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ load(
"//:build_defs.bzl",
"DOCLINT_HTML_AND_SYNTAX",
"DOCLINT_REFERENCES",
"POM_VERSION",
"SOURCE_7_TARGET_7",
)
load("//tools:maven.bzl", "POM_VERSION", "gen_maven_artifact")
load("//tools:maven.bzl", "gen_maven_artifact")

package(default_visibility = ["//:src"])

Expand Down
3 changes: 2 additions & 1 deletion java/dagger/spi/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ load(
"//:build_defs.bzl",
"DOCLINT_HTML_AND_SYNTAX",
"DOCLINT_REFERENCES",
"POM_VERSION",
)
load("//tools:maven.bzl", "POM_VERSION", "gen_maven_artifact")
load("//tools:maven.bzl", "gen_maven_artifact")

package(default_visibility = ["//:src"])

Expand Down
5 changes: 0 additions & 5 deletions tools/maven.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,6 @@ def pom_file(name, targets, artifact_name, artifact_id, packaging = None, **kwar
**kwargs
)

POM_VERSION = "${project.version}"

# DO NOT remove the comment on the next line. it's used in deploy-to-maven-central.sh
POM_VERSION_ALPHA = POM_VERSION #ALPHA_POSTFIX

def gen_maven_artifact(
name,
artifact_name,
Expand Down
4 changes: 2 additions & 2 deletions util/deploy-to-maven-central.sh
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ git checkout --detach
# Set the version string that is used as a tag in all of our libraries. If
# another repo depends on a versioned tag of Dagger, their java_library.tags
# should match the versioned release.
sed -i s/'#ALPHA_POSTFIX'/'+ "-alpha"'/g tools/maven.bzl
sed -i s/'${project.version}'/"${VERSION_NAME}"/g tools/maven.bzl
sed -i s/'#ALPHA_POSTFIX'/'+ "-alpha"'/g build_defs.bzl
sed -i s/'${project.version}'/"${VERSION_NAME}"/g build_defs.bzl

bash $(dirname $0)/deploy-dagger.sh \
"gpg:sign-and-deploy-file" \
Expand Down
Loading

0 comments on commit 51c9a1d

Please sign in to comment.