This repository contains tools used for migrating existing projects to Bazel.
To migrate a Maven project to Bazel, build:
bazel run //generate_workspace -- --maven_project=/path/to/maven/project
This will create a file generate_workspace.bzl
. Copy it to your workspace
and add the following to your WORKSPACE file:
load("//:generate_workspace.bzl", "generated_maven_jars")
generated_maven_jars()
Then you can access any of the jars in generate_workspace.bzl
.
Optionally, add the following to a BUILD file:
load("//:generate_workspace.bzl", "generated_java_libraries")
generated_java_libraries()
Then you can access any of the Java library targets in generate_workspace.bzl
,
which export each jar's dependencies as well as the jar itself.
The transitive_maven_jar
repository rule exposes the specified Maven jars, as well as their transitive dependencies under one target. This alleviates the need to run
generate_workspace
whenever dependencies change. However, it comes at the cost of re-fetching dependencies.
As a prerequisite for use, you must have bazel 0.5.2 or later installed. In addition, add the following to your WORKSPACE
file:
http_archive(
name = "trans_maven_jar",
url = "https://github.com/bazelbuild/migration-tooling/archive/master.zip",
type = "zip",
strip_prefix = "migration-tooling-master",
)
load("@trans_maven_jar//transitive_maven_jar:transitive_maven_jar.bzl", "transitive_maven_jar")
Now, within your WORKSPACE
file, you can define your external maven dependencies as follows
transitive_maven_jar(
name = "dependencies",
artifacts = [
"something:something:4.0",
"otherthing:otherthing:3.2",
...
]
)
load("@dependencies//:generate_workspace.bzl", "generated_maven_jars")
generated_maven_jars()
The transitive_maven_jar
rule will resolve the transitive dependencies for the specified artifacts and then it will generate a generate_workspace.bzl
which you must load in your WORKSPACE
file.
This code was inspired by the aether examples for walking maven dependencies.