Skip to content

Commit

Permalink
Add blaze rule to validate and generate files for a maven artifact.
Browse files Browse the repository at this point in the history
This CL adds a skylark macro, `gen_maven_artifact`, that generates all of the maven artifact files:

  * pom.xml
  * jar file
  * src jar file
  * javadoc jar file

In addition, the macro validates that the user has specified all of the target's required dependencies. A dependency is "required" if it is not included in any of the maven dependencies of the target.

RELNOTES=N/A

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=272729031
  • Loading branch information
bcorso authored and cpovirk committed Oct 4, 2019
1 parent 6364fef commit 0d9fdb3
Show file tree
Hide file tree
Showing 8 changed files with 294 additions and 147 deletions.
42 changes: 0 additions & 42 deletions BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -53,48 +53,6 @@ load("@google_bazel_common//tools/jarjar:jarjar.bzl", "jarjar_library")

SHADE_RULES = ["rule com.google.auto.common.** dagger.shaded.auto.common.@1"]

jarjar_library(
name = "shaded_compiler",
jars = [
"//java/dagger/internal/codegen:processor",
"//java/dagger/internal/codegen/base",
"//java/dagger/internal/codegen/binding",
"//java/dagger/internal/codegen/bindinggraphvalidation",
"//java/dagger/internal/codegen/compileroption",
"//java/dagger/internal/codegen/extension",
"//java/dagger/internal/codegen/javapoet",
"//java/dagger/internal/codegen/kotlin",
"//java/dagger/internal/codegen/langmodel",
"//java/dagger/internal/codegen/statistics",
"//java/dagger/internal/codegen/validation",
"//java/dagger/internal/codegen/writing",
"//java/dagger/model:internal-proxies",
"//java/dagger/errorprone",
"@com_google_auto_auto_common//jar",
],
rules = SHADE_RULES,
)

jarjar_library(
name = "shaded_compiler_src",
jars = [
"//java/dagger/internal/codegen:libprocessor-src.jar",
"//java/dagger/internal/codegen/base:libbase-src.jar",
"//java/dagger/internal/codegen/binding:libbinding-src.jar",
"//java/dagger/internal/codegen/bindinggraphvalidation:libbindinggraphvalidation-src.jar",
"//java/dagger/internal/codegen/compileroption:libcompileroption-src.jar",
"//java/dagger/internal/codegen/extension:libextension-src.jar",
"//java/dagger/internal/codegen/javapoet:libjavapoet-src.jar",
"//java/dagger/internal/codegen/kotlin:libkotlin-src.jar",
"//java/dagger/internal/codegen/langmodel:liblangmodel-src.jar",
"//java/dagger/internal/codegen/statistics:libstatistics-src.jar",
"//java/dagger/internal/codegen/validation:libvalidation-src.jar",
"//java/dagger/internal/codegen/writing:libwriting-src.jar",
# TODO(ronshapiro): is there a generated src.jar for protos in Bazel?
"//java/dagger/errorprone:liberrorprone-src.jar",
],
)

jarjar_library(
name = "shaded_android_processor",
jars = [
Expand Down
83 changes: 45 additions & 38 deletions java/dagger/internal/codegen/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -17,48 +17,46 @@

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

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

DAGGER_DEPS = [
"//java/dagger/internal/codegen/base",
"//java/dagger/internal/codegen/binding",
"//java/dagger/internal/codegen/bindinggraphvalidation",
"//java/dagger/internal/codegen/compileroption",
"//java/dagger/internal/codegen/extension",
"//java/dagger/internal/codegen/javapoet",
"//java/dagger/internal/codegen/kotlin",
"//java/dagger/internal/codegen/langmodel",
"//java/dagger/internal/codegen/statistics",
"//java/dagger/internal/codegen/validation",
"//java/dagger/internal/codegen/writing",
]
load("//tools:maven.bzl", "POM_VERSION", "gen_maven_artifact")

java_library(
name = "processor",
srcs = glob(["*.java"]),
srcs = glob(
["*.java"],
exclude = ["package-info.java"],
),
plugins = [
"//java/dagger/internal/codegen/bootstrap",
],
tags = ["maven_coordinates=com.google.dagger:dagger-compiler:" + POM_VERSION],
deps = DAGGER_DEPS + [
deps = [
":package_info",
"//java/dagger:core",
"//java/dagger/internal/codegen/base",
"//java/dagger/internal/codegen/binding",
"//java/dagger/internal/codegen/bindinggraphvalidation",
"//java/dagger/internal/codegen/compileroption",
"//java/dagger/internal/codegen/extension",
"//java/dagger/internal/codegen/javapoet",
"//java/dagger/internal/codegen/kotlin",
"//java/dagger/internal/codegen/langmodel",
"//java/dagger/internal/codegen/statistics",
"//java/dagger/internal/codegen/validation",
"//java/dagger/internal/codegen/writing",
"//java/dagger/model:internal-proxies",
"//java/dagger/producers",
"//java/dagger/spi",
"@google_bazel_common//third_party/java/auto:common",
"@google_bazel_common//third_party/java/auto:service",
"@google_bazel_common//third_party/java/auto:value",
"@google_bazel_common//third_party/java/auto:common",
"@google_bazel_common//third_party/java/checker_framework_annotations",
"@google_bazel_common//third_party/java/error_prone:annotations",
"@google_bazel_common//third_party/java/google_java_format",
"@google_bazel_common//third_party/java/guava",
"@google_bazel_common//third_party/java/incap",
"@google_bazel_common//third_party/java/javapoet",
"@bazel_tools//tools/jdk:langtools-neverlink",
"@google_bazel_common//third_party/java/jsr250_annotations",
"@google_bazel_common//third_party/java/jsr330_inject",
"//java/dagger:core",
"//java/dagger/producers",
"//java/dagger/spi",
"//java/dagger/model:internal-proxies",
"@google_bazel_common//third_party/java/incap",
"@google_bazel_common//third_party/java/guava",
],
)

Expand All @@ -69,20 +67,29 @@ java_library(
deps = ["@google_bazel_common//third_party/java/error_prone:annotations"],
)

pom_file(
name = "pom",
gen_maven_artifact(
name = "artifact",
artifact_id = "dagger-compiler",
artifact_name = "Dagger Compiler",
targets = DAGGER_DEPS + [":processor"],
)

# The javadocs should only include ComponentProcessor.java, since that is the only class used
# externally. Specifically, ComponentProcessor.forTesting() is required for testing SPI plugins.
javadoc_library(
name = "codegen-javadoc",
srcs = ["ComponentProcessor.java"],
root_packages = ["dagger.internal.codegen"],
deps = [":processor"],
artifact_target = ":processor",
javadoc_root_packages = ["dagger.internal.codegen"],
# The javadocs should only include ComponentProcessor.java, since that is the only class used
# externally. Specifically, ComponentProcessor.forTesting() is required for testing SPI plugins.
javadoc_srcs = ["ComponentProcessor.java"],
deps = [
":package_info",
"//java/dagger/internal/codegen/base",
"//java/dagger/internal/codegen/binding",
"//java/dagger/internal/codegen/bindinggraphvalidation",
"//java/dagger/internal/codegen/compileroption",
"//java/dagger/internal/codegen/javapoet",
"//java/dagger/internal/codegen/kotlin",
"//java/dagger/internal/codegen/langmodel",
"//java/dagger/internal/codegen/statistics",
"//java/dagger/internal/codegen/validation",
"//java/dagger/internal/codegen/writing",
"//java/dagger/model:internal-proxies",
],
)

java_plugin(
Expand Down
1 change: 0 additions & 1 deletion java/dagger/internal/codegen/compileroption/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ java_library(
"//java/dagger/internal/codegen/extension",
"//java/dagger/internal/codegen/langmodel",
"//java/dagger/producers",
"@bazel_tools//tools/jdk:langtools-neverlink",
"@google_bazel_common//third_party/java/auto:common",
"@google_bazel_common//third_party/java/google_java_format",
"@google_bazel_common//third_party/java/guava",
Expand Down
21 changes: 7 additions & 14 deletions java/dagger/producers/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ load(
"DOCLINT_REFERENCES",
"SOURCE_7_TARGET_7",
)
load("//tools:maven.bzl", "pom_file", "POM_VERSION")
load("//tools:maven.bzl", "POM_VERSION", "gen_maven_artifact")

# Work around b/70476182 which prevents Kythe from connecting :producers to the .java files it
# contains.
Expand Down Expand Up @@ -53,22 +53,15 @@ java_library(
],
)

pom_file(
name = "pom",
gen_maven_artifact(
name = "artifact",
artifact_id = "dagger-producers",
artifact_name = "Dagger Producers",
targets = [":producers"],
)

load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

javadoc_library(
name = "producers-javadoc",
srcs = SRCS,
exclude_packages = [
artifact_target = ":producers",
javadoc_exclude_packages = [
"dagger.producers.internal",
"dagger.producers.monitoring.internal",
],
root_packages = ["dagger.producers"],
deps = [":producers"],
javadoc_root_packages = ["dagger.producers"],
javadoc_srcs = SRCS,
)
54 changes: 11 additions & 43 deletions java/dagger/spi/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.

load("@google_bazel_common//tools/jarjar:jarjar.bzl", "jarjar_library")
load("@google_bazel_common//tools/javadoc:javadoc.bzl", "javadoc_library")

# Description:
# The Service Provider Interface for Dagger's binding graph model

Expand All @@ -25,7 +22,7 @@ load(
"DOCLINT_HTML_AND_SYNTAX",
"DOCLINT_REFERENCES",
)
load("//tools:maven.bzl", "POM_VERSION", "pom_file")
load("//tools:maven.bzl", "POM_VERSION", "gen_maven_artifact")

filegroup(
name = "spi-srcs",
Expand All @@ -50,50 +47,21 @@ java_library(
],
)

javadoc_library(
name = "spi-javadoc",
srcs = [
":spi-srcs",
"//java/dagger/model:model-srcs",
],
root_packages = [
gen_maven_artifact(
name = "artifact",
artifact_id = "dagger-spi",
artifact_name = "Dagger SPI",
artifact_target = ":spi",
javadoc_root_packages = [
"dagger.model",
"dagger.spi",
],
deps = [
":spi",
"//java/dagger/model",
javadoc_srcs = [
":spi-srcs",
"//java/dagger/model:model-srcs",
],
)

jarjar_library(
name = "shaded_spi",
jars = [
# TODO(user): Look into why this depends on internal/codegen/extension, and how this
# doesn't break gradle users since maven doesn't know to pull in the codegen dependency.
deps = [
"//java/dagger/internal/codegen/extension",
"//java/dagger/model",
"//java/dagger/spi",
"@com_google_auto_auto_common//jar",
],
rules = ["rule com.google.auto.common.** dagger.shaded.auto.common.@1"],
)

jarjar_library(
name = "shaded_spi_src",
jars = [
"//java/dagger/internal/codegen/extension:libextension-src.jar",
"//java/dagger/model:libmodel-src.jar",
"//java/dagger/spi:libspi-src.jar",
],
)

pom_file(
name = "pom",
artifact_id = "dagger-spi",
artifact_name = "Dagger SPI",
targets = [
"//java/dagger/model",
":spi",
],
)
Loading

0 comments on commit 0d9fdb3

Please sign in to comment.