Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bazelbuild/migration-tooling
Migration tools for Bazel
https://github.com/bazelbuild/migration-tooling
bazel java
Last synced: 11 days ago
JSON representation
Migration tools for Bazel
- Host: GitHub
- URL: https://github.com/bazelbuild/migration-tooling
- Owner: bazelbuild
- License: apache-2.0
- Archived: true
- Created: 2017-06-07T14:55:34.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-30T13:22:25.000Z (almost 6 years ago)
- Last Synced: 2024-06-07T07:32:33.972Z (5 months ago)
- Topics: bazel, java
- Language: Java
- Size: 10.8 MB
- Stars: 44
- Watchers: 25
- Forks: 30
- Open Issues: 43
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-bazel - bazelbuild/migration-tooling - Migrate an existing Maven project to Bazel. (Tooling / Migration)
- awesome-monorepo - Bazel 的 migration-tooling - tooling.svg?style=social&label=Star) (迁移工具 / Code ownership)
README
# DEPRECATED
This project is deprecated. Use [build-deps](https://github.com/johnynek/bazel-deps) instead.
[![Build status](https://badge.buildkite.com/3d265f4a4ef0aa6c54208278c5062491bb074298069d30b051.svg)](https://buildkite.com/bazel/migration-tooling-postsubmit)
# 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:``` python
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:
``` python
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:
```python
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
```python
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](https://github.com/eclipse/aether-demo/blob/322fa556494335faaf3ad3b7dbe8f89aaaf6222d/aether-demo-snippets/src/main/java/org/eclipse/aether/examples/GetDependencyTree.java) for walking maven dependencies.