From bc1fbcad2d54017bf2cb5e98087a1ea98dd6f054 Mon Sep 17 00:00:00 2001 From: Colin Alworth Date: Fri, 1 Apr 2022 08:38:18 -0500 Subject: [PATCH] WIP commit of the three attempts so far This latest attempt nearly works except I still can't get protobuf to stop being counted as a non-maven jar. --- BUILD.bazel | 43 +++++++++++++++-- WORKSPACE.bazel | 64 +++++++++++++++++++++++++ maven/closure-compiler-unshaded.pom.xml | 3 ++ 3 files changed, 107 insertions(+), 3 deletions(-) diff --git a/BUILD.bazel b/BUILD.bazel index 669ad29ea53..09ea17b793d 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -126,7 +126,44 @@ filegroup( ), ) -java_binary( +#attempt 3 +load("@rules_jvm_external//:defs.bzl", "java_export") +java_export( + name = "exported_compiler_unshaded", + maven_coordinates = "com.google.javascript:closure-compiler-unshaded:v20220401", + runtime_deps = [ + "//:compiler_lib", + ], +) + +#attempt 2 +#load("@vaticle_bazel_distribution//maven:rules.bzl","assemble_maven") +#assemble_maven( +# name = "compiler_unshaded_maven", +# target = '//:compiler_lib' +#) + +#attempt 1 +#load("@google_bazel_common//tools/maven:pom_file.bzl", "pom_file") +#pom_file( +# name = 'compiler_unshaded_pom', +# template_file = 'maven/closure-compiler-unshaded.pom.xml', +# targets = [ +# '//:compiler_lib' +# ], +#) + + +# need a magic bazel rule that combines the following into a single jar for deployment to maven central +# //:compiler_lib for the "runtime libs", apparently js and typedast contents +# //:compiler_lib_no_runtime_libs for most of the sources +# then, from compiler_lib_no_runtime_libs, we need these deps (but no others, as they are external): +# "//src/com/google/debugging/sourcemap/proto:mapping_java_proto", +# "//src/com/google/javascript/jscomp/conformance:conformance_java_proto", +# "//src/com/google/javascript/jscomp/instrumentation/reporter/proto:profile_java_proto", +# "//src/com/google/javascript/rhino/typed_ast:typed_ast_java_proto", + +java_binary(# also a lie, as this is a java_binary, the _deploy.jar contains all deps name = "compiler_unshaded_no_runtime_libs", main_class = "com.google.javascript.jscomp.CommandLineRunner", runtime_deps = [":compiler_lib_no_runtime_libs"], @@ -171,7 +208,7 @@ oss_java_library( "@com_google_code_gson_gson", "@com_google_guava_failureaccess//jar", "@com_google_guava_guava//jar", - "@com_google_protobuf//:protobuf_java", + "@maven//:com_google_protobuf_protobuf_java", "@com_google_re2j_re2j", "@google_bazel_common//third_party/java/auto:value", "@google_bazel_common//third_party/java/error_prone:annotations", @@ -236,7 +273,7 @@ gen_java_tests( "@com_google_guava_guava//jar", "@com_google_guava_guava_testlib//jar", "@com_google_jimfs_jimfs", - "@com_google_protobuf//:protobuf_java", + "@maven//:com_google_protobuf_protobuf_java", "@com_google_re2j_re2j", "@com_google_truth_extensions_truth_liteproto_extension", "@com_google_truth_extensions_truth_proto_extension", diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel index ad157f5cc88..c796ed56009 100644 --- a/WORKSPACE.bazel +++ b/WORKSPACE.bazel @@ -33,6 +33,55 @@ load("@google_bazel_common//:workspace_defs.bzl", "google_common_workspace_rules google_common_workspace_rules() +# attempt 3 +RULES_JVM_EXTERNAL_TAG = "4.2" +RULES_JVM_EXTERNAL_SHA = "cd1a77b7b02e8e008439ca76fd34f5b07aecb8c752961f9640dea15e9e5ba1ca" + +http_archive( + name = "rules_jvm_external", + strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, + sha256 = RULES_JVM_EXTERNAL_SHA, + url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG, +) + +load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") + +rules_jvm_external_deps() + +load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup") + +rules_jvm_external_setup() + +# attempt 2 +#http_archive( +# name = "vaticle_bazel_distribution", +# sha256 = "aa9da4875d679b4fda680d13845d505b3033ec746b238fee5868c52f69929cba", +# strip_prefix = "bazel-distribution-8eb8a0e920d43bf2d3100e22e7e36dc29009bac5", +# urls = [ +# "https://github.com/vaticle/bazel-distribution/archive/8eb8a0e920d43bf2d3100e22e7e36dc29009bac5.zip", +# ], +#) +# +#load("@vaticle_bazel_distribution//common:deps.bzl","rules_kotlin", "rules_jvm_external") +#rules_kotlin() +#rules_jvm_external() +# +#load("@io_bazel_rules_kotlin//kotlin:kotlin.bzl", "kotlin_repositories", "kt_register_toolchains") +#kotlin_repositories() +#kt_register_toolchains() +# +#load("@vaticle_bazel_distribution//maven:deps.bzl", "maven_artifacts_with_versions") +#load("@rules_jvm_external//:defs.bzl", "maven_install") +#maven_install( +# artifacts = maven_artifacts_with_versions, +# repositories = [ +# "https://repo1.maven.org/maven2", +# ], +# strict_visibility = True, +# version_conflict_policy = "pinned", +# fetch_sources = True, +#) + maven_import( # http://args4j.kohsuke.org/index.html group_id = "args4j", @@ -147,3 +196,18 @@ http_archive( load("@com_github_johnynek_bazel_jar_jar//:jar_jar.bzl", "jar_jar_repositories") jar_jar_repositories() + +load("@rules_jvm_external//:defs.bzl", "maven_install") +maven_install( + artifacts = [ + "com.google.protobuf:protobuf-java:3.19.2", + "com.google.protobuf:protobuf-java-util:3.19.2", + ], + override_targets = { + "com.google.protobuf:protobuf-java": "@com_google_protobuf//:protobuf_java", + }, + repositories = [ + "https://repo1.maven.org/maven2", + ], + strict_visibility = True, +) \ No newline at end of file diff --git a/maven/closure-compiler-unshaded.pom.xml b/maven/closure-compiler-unshaded.pom.xml index 84b5fdb3cf1..a2513fb11c3 100644 --- a/maven/closure-compiler-unshaded.pom.xml +++ b/maven/closure-compiler-unshaded.pom.xml @@ -43,4 +43,7 @@ 1.0-SNAPSHOT closure-compiler-main.pom.xml + + {generated_bzl_deps} +