Skip to content

bung-wg2/migration-tooling

 
 

Repository files navigation

Build status

Migration tooling

This repository contains tools used for migrating existing projects to Bazel.

Maven-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.

transitive_maven_jar

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.

Code

This code was inspired by the aether examples for walking maven dependencies.

About

Migration tools for Bazel

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 86.4%
  • Python 13.6%