bazelbuild / rules_jvm_external

Bazel rules to resolve, fetch and export Maven artifacts
Apache License 2.0
322 stars 245 forks source link

Single POM Dep Doesn't Work #799

Open aryeh-looker opened 1 year ago

aryeh-looker commented 1 year ago

Repro:

# WORKSPACE

################################################################################
# rules_jvm_external
################################################################################

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

RULES_JVM_EXTERNAL_TAG = "4.5"
RULES_JVM_EXTERNAL_SHA ="b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"

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/refs/tags/%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()

################################################################################
# rules_jvm_external: JAR Dependencies
################################################################################

load("@rules_jvm_external//:defs.bzl", "maven_install")

maven_install(
    artifacts = [
        "org.apache.tika:tika:2.6.0"

    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)
# BUILD

java_binary(
    name = "client",
    srcs = ["Main.java"],
    main_class = "Main",
    deps = [
        "@maven//:org_apache_tika_tika"
    ]
)

Error:

/usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/rules_jvm_external/coursier.bzl:1306:33: in <toplevel>
INFO: Repository 'maven' used the following cache hits instead of downloading the corresponding file.
 * Hash '5c0a0a3ea600f302ee458b30317425dd9632d1ad8882259fcaf4e9b868b2b1ef' for https://github.com/stedolan/jq/releases/download/jq-1.6/jq-osx-amd64
 * Hash 'af986793a515d500ab2d35f8d2aecd656e764504b789b66d7e1a0b727a124c44' for https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
 * Hash '076de041cbebc0a1272b84f1e69f6da5df4961847850b95cb3dfa3f776145225' for https://github.com/coursier/coursier/releases/download/v2.0.16/coursier.jar
 * Hash 'a51d36968dcbdeabb3142c6f5cf9b401a65dc3a095f3144bd0c118d5bb192753' for https://github.com/stedolan/jq/releases/download/jq-1.6/jq-win64.exe
If the definition of 'maven' was updated, verify that the hashes were also updated.
ERROR: An error occurred during the fetch of repository 'maven':
   Traceback (most recent call last):
    File "/usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/rules_jvm_external/coursier.bzl", line 1093, column 43, in _coursier_fetch_impl
        hasher_stdout = _execute_with_argsfile(
    File "/usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/rules_jvm_external/coursier.bzl", line 166, column 13, in _execute_with_argsfile
        fail("Error while " + error_description + ": " + exec_result.stderr)
Error in fail: Error while obtaining the sha256 checksums: Exception in thread "main" java.lang.IllegalArgumentException: File does not exist or is not a file: /usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/maven
    at rules.jvm.external.Hasher.lambda$hashFiles$0(Hasher.java:53)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:117)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
    at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:736)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at rules.jvm.external.Hasher.hashFiles(Hasher.java:62)
    at rules.jvm.external.Hasher.main(Hasher.java:39)
ERROR: WORKSPACE:54:14: fetching coursier_fetch rule //external:maven: Traceback (most recent call last):
    File "/usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/rules_jvm_external/coursier.bzl", line 1093, column 43, in _coursier_fetch_impl
        hasher_stdout = _execute_with_argsfile(
    File "/usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/rules_jvm_external/coursier.bzl", line 166, column 13, in _execute_with_argsfile
        fail("Error while " + error_description + ": " + exec_result.stderr)
Error in fail: Error while obtaining the sha256 checksums: Exception in thread "main" java.lang.IllegalArgumentException: File does not exist or is not a file: /usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/maven
    at rules.jvm.external.Hasher.lambda$hashFiles$0(Hasher.java:53)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:117)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
    at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:736)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at rules.jvm.external.Hasher.hashFiles(Hasher.java:62)
    at rules.jvm.external.Hasher.main(Hasher.java:39)
ERROR: ... depends on @maven//:org_apache_tika_tika in repository @maven which failed to fetch. no such package '@maven//': Error while obtaining the sha256 checksums: Exception in thread "main" java.lang.IllegalArgumentException: File does not exist or is not a file: /usr/local/google/home/aryehh/.cache/bazel/_bazel_aryehh/b2aaeb80deeef55ecc44c1d609726d77/external/maven
    at rules.jvm.external.Hasher.lambda$hashFiles$0(Hasher.java:53)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.nio.file.FileChannelLinesSpliterator.forEachRemaining(FileChannelLinesSpliterator.java:117)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:475)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
    at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinTask.doInvoke(ForkJoinTask.java:408)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:736)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at rules.jvm.external.Hasher.hashFiles(Hasher.java:62)
    at rules.jvm.external.Hasher.main(Hasher.java:39)
ERROR: Analysis of target '...' failed; build aborted: Analysis failed
INFO: Elapsed time: 4.267s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (23 packages loaded, 84 targets configured)
ERROR: Build failed. Not running target
FAILED: Build did NOT complete successfully (23 packages loaded, 84 targets configured)

Same error with bazel 5 and bazel 6.

aryeh-looker commented 1 year ago

Note that tika is furnished as a POM only https://repo1.maven.org/maven2/org/apache/tika/tika/2.6.0/.

Interestingly, the error goes appears to go away if more dependencies are added; for example:

maven_install(
    artifacts = [
        "junit:junit:4.13.2",
        "org.apache.tika:tika:2.6.0"

    ],
    repositories = [
        "https://maven.google.com",
        "https://repo1.maven.org/maven2",
    ],
)