Please note The lock file format was changed in rules_jvm_external 5.1. If you update and repin your dependencies, your lock file will use the new format.
Usage
This version of rules_jvm_external requires Bazel 6.5.0, Bazel 7.6.1 or Bazel 8.
This release requires Java 11 or above to run, both as the host JDK and the build and tool JDK.
Bzlmod
If you are using Bazel 7 or above, in your MODULE.bazel file:
bazel_dep(name = "rules_jvm_external", version = "6.9")To add dependencies, later in your MODULE.bazel file:
maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven")
maven.install(
artifacts = [
"org.seleniumhq.selenium:selenium-java:4.38.0",
],
repositories = [
"https://repo1.maven.org/maven2",
],
lock_file = "//:maven_install.json",
)
use_repo(maven, "maven")Workspace-based builds
In your WORKSPACE file, add:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
RULES_JVM_EXTERNAL_TAG = "6.9"
RULES_JVM_EXTERNAL_SHA = "3c41eae4226a7dfdce7b213bc541557b8475c92da71e2233ec7c306630243a65"
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/bazel-contrib/rules_jvm_external/releases/download/%s/rules_jvm_external-%s.tar.gz" % (RULES_JVM_EXTERNAL_TAG, 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()Then, later in your WORKSPACE file, you can pull in dependencies from a maven repository:
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
artifacts = [
"org.seleniumhq.selenium:selenium-java:4.38.0",
],
repositories = [
"https://repo1.maven.org/maven2",
],
maven_install_json = "//:maven_install.json",
)Using dependencies
In your BUILD.bazel file, reference the targets directly:
java_library(
name = "example",
exports = [
"@maven//:org_seleniumhq_selenium_selenium_java",
],
)What's Changed
- Handle
packagein gradle versions files properly by @shs96c in #1419 - Fetch transitive POMs in gradle resolver by @smocherla-brex in #1411
- maven.override: make override alias preserve strict visibility of overridden target by @dmivankov in #1416
- Indicate which
installtag has duplicate coordinates by @shs96c in #1422 - Require
force_versionfor root module artifact to take precedence by @shs96c in #1423 - Generate
@package_metadatainfo forjvm_importtargets by @Yannic in #1410 - Write exclusions to pom.xml by @vinnybod in #1375
- set -XX:+ExitOnOutOfMemoryError when invoking coursier by @mattnworb in #1433
- Remove asc signatures on checksums in MavenPublisher by @l46kok in #1430
- Add support for publishing maven-metadata.xml by @fzakaria in #1260
- Maintain Starlark insertion order for repositories by @jjudd in #1447
- Do not use import scope in dependencies by @honnix in #1432
- Fix issue where MavenPublisher hangs indefinitely by @vinnybod in #1444
- Expose CreateJar as a rule by @vinnybod in #1449
- Add more unit tests for gradle resolver by @smocherla-brex in #1457
- Ensure resolved artifact hash is calculated the same way in Java and Starlark by @shs96c in #1462
- [gradle] Symlink user cache dir when
RJE_UNSAFE_CACHEis set by @shs96c in #1448 - Untangle resolvers by @shs96c in #1458
- Ensure packaging is respected when resolving artifacts by @shs96c in #1463
- ci: Enable Local test examples on macOS by @utzcoz in #1459
- Handle all known variants used in gradle version catalogues by @shs96c in #1468
- Fix gradle resolver to throw exception on unresolved dependencies by @smocherla-brex in #1466
- Fix cycles with some dependencies with gradle resolver by @smocherla-brex in #1472
New Contributors
- @l46kok made their first contribution in #1430
- @fzakaria made their first contribution in #1260
- @jjudd made their first contribution in #1447
Full Changelog: 6.8...6.9