bazel-contrib / bazel-contrib/rules_jvm_external

Single POM Dep Doesn't Work

Open
#799 1 comment 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
373
Forks
301
Avg merge
7d 17h
Merged PRs (30d)
3

Description

Repro:

```python
# 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",
],
)
```

```python
# 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
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.

Contributor guide

Open the contributing guide

Research direction

Reproduce the WORKSPACE example with the single org.apache.tika:tika:2.6.0 artifact and the BUILD target using Bazel 5 or 6. Start in coursier.bzl around lines 1093 and 1306, then trace the failing Hasher invocation and the missing external/maven path. Done means the Maven repository fetch and dependent Java target build complete successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.