blob: 987397e5ee052648f54fad330a7487405f8dd6d1 [file] [view]
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
# API Reference
- [Basic functions](#basic-functions)
- [maven_install](#maven_install)
- [Parameters](#parameters)
- [Maven specification functions](#maven-specification-functions)
- [maven.repository](#mavenrepository)
- [Parameters](#parameters-1)
- [maven.artifact](#mavenartifact)
- [Parameters](#parameters-2)
- [maven.exclusion](#mavenexclusion)
- [Parameters](#parameters-3)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# Basic functions
These are the basic functions to get started.
To use these functions, load them at the top of your BUILD file. For example:
```python
load("@rules_jvm_external//:defs.bzl", "maven_install", "artifact")
```
<!-- Generated with Stardoc: http://skydoc.bazel.build -->
<a name="#maven_install"></a>
## maven_install
<pre>
maven_install(<a href="#maven_install-name">name</a>, <a href="#maven_install-repositories">repositories</a>, <a href="#maven_install-artifacts">artifacts</a>, <a href="#maven_install-fail_on_missing_checksum">fail_on_missing_checksum</a>, <a href="#maven_install-fetch_sources">fetch_sources</a>, <a href="#maven_install-use_unsafe_shared_cache">use_unsafe_shared_cache</a>, <a href="#maven_install-excluded_artifacts">excluded_artifacts</a>, <a href="#maven_install-generate_compat_repositories">generate_compat_repositories</a>, <a href="#maven_install-maven_install_json">maven_install_json</a>)
</pre>
Resolves and fetches artifacts transitively from Maven repositories.
This macro runs a repository rule that invokes the Coursier CLI to resolve
and fetch Maven artifacts transitively.
### Parameters
<table class="params-table">
<colgroup>
<col class="col-param" />
<col class="col-description" />
</colgroup>
<tbody>
<tr id="maven_install-name">
<td><code>name</code></td>
<td>
optional. default is <code>"maven"</code>
<p>
A unique name for this Bazel external repository.
</p>
</td>
</tr>
<tr id="maven_install-repositories">
<td><code>repositories</code></td>
<td>
optional. default is <code>[]</code>
<p>
A list of Maven repository URLs, specified in lookup order.
Supports URLs with HTTP Basic Authentication, e.g. "https://username:password@example.com".
</p>
</td>
</tr>
<tr id="maven_install-artifacts">
<td><code>artifacts</code></td>
<td>
optional. default is <code>[]</code>
<p>
A list of Maven artifact coordinates in the form of `group:artifact:version`.
</p>
</td>
</tr>
<tr id="maven_install-fail_on_missing_checksum">
<td><code>fail_on_missing_checksum</code></td>
<td>
optional. default is <code>True</code>
</td>
</tr>
<tr id="maven_install-fetch_sources">
<td><code>fetch_sources</code></td>
<td>
optional. default is <code>False</code>
<p>
Additionally fetch source JARs.
</p>
</td>
</tr>
<tr id="maven_install-use_unsafe_shared_cache">
<td><code>use_unsafe_shared_cache</code></td>
<td>
optional. default is <code>False</code>
<p>
Download artifacts into a persistent shared cache on disk. Unsafe as Bazel is
currently unable to detect modifications to the cache.
</p>
</td>
</tr>
<tr id="maven_install-excluded_artifacts">
<td><code>excluded_artifacts</code></td>
<td>
optional. default is <code>[]</code>
<p>
A list of Maven artifact coordinates in the form of `group:artifact` to be
excluded from the transitive dependencies.
</p>
</td>
</tr>
<tr id="maven_install-generate_compat_repositories">
<td><code>generate_compat_repositories</code></td>
<td>
optional. default is <code>False</code>
<p>
Additionally generate repository aliases in a .bzl file for all JAR
artifacts. For example, `@maven//:com_google_guava_guava` can also be referenced as
`@com_google_guava_guava//jar`.
</p>
</td>
</tr>
<tr id="maven_install-maven_install_json">
<td><code>maven_install_json</code></td>
<td>
optional. default is <code>None</code>
<p>
A label to a `maven_install.json` file to use pinned artifacts for generating
build targets. e.g `//:maven_install.json`.
</p>
</td>
</tr>
</tbody>
</table>
# Maven specification functions
These are helper functions to specify more information about Maven artifacts and
repositories in `maven_install`.
To use these functions, load the `maven` struct at the top of your BUILD file:
```python
load("@rules_jvm_external//:specs.bzl", "maven")
```
<!-- Generated with Stardoc: http://skydoc.bazel.build -->
<a name="#maven.repository"></a>
## maven.repository
<pre>
maven.repository(<a href="#maven.repository-url">url</a>, <a href="#maven.repository-user">user</a>, <a href="#maven.repository-password">password</a>)
</pre>
Generates the data map for a Maven repository specifier given the available information.
If both a user and password are given as arguments, it will include the
access credentials in the repository spec. If one or both are missing, it
will just generate the repository url.
### Parameters
<table class="params-table">
<colgroup>
<col class="col-param" />
<col class="col-description" />
</colgroup>
<tbody>
<tr id="maven.repository-url">
<td><code>url</code></td>
<td>
required.
<p>
A string containing the repository url (ex: "https://maven.google.com/").
</p>
</td>
</tr>
<tr id="maven.repository-user">
<td><code>user</code></td>
<td>
optional. default is <code>None</code>
<p>
A username for this Maven repository, if it requires authentication (ex: "johndoe").
</p>
</td>
</tr>
<tr id="maven.repository-password">
<td><code>password</code></td>
<td>
optional. default is <code>None</code>
<p>
A password for this Maven repository, if it requires authentication (ex: "example-password").
</p>
</td>
</tr>
</tbody>
</table>
<a name="#maven.artifact"></a>
## maven.artifact
<pre>
maven.artifact(<a href="#maven.artifact-group">group</a>, <a href="#maven.artifact-artifact">artifact</a>, <a href="#maven.artifact-version">version</a>, <a href="#maven.artifact-packaging">packaging</a>, <a href="#maven.artifact-classifier">classifier</a>, <a href="#maven.artifact-override_license_types">override_license_types</a>, <a href="#maven.artifact-exclusions">exclusions</a>, <a href="#maven.artifact-neverlink">neverlink</a>)
</pre>
Generates the data map for a Maven artifact given the available information about its coordinates.
### Parameters
<table class="params-table">
<colgroup>
<col class="col-param" />
<col class="col-description" />
</colgroup>
<tbody>
<tr id="maven.artifact-group">
<td><code>group</code></td>
<td>
required.
<p>
The Maven artifact coordinate group name (ex: "com.google.guava").
</p>
</td>
</tr>
<tr id="maven.artifact-artifact">
<td><code>artifact</code></td>
<td>
required.
<p>
The Maven artifact coordinate artifact name (ex: "guava").
</p>
</td>
</tr>
<tr id="maven.artifact-version">
<td><code>version</code></td>
<td>
required.
<p>
The Maven artifact coordinate version name (ex: "27.0-jre").
</p>
</td>
</tr>
<tr id="maven.artifact-packaging">
<td><code>packaging</code></td>
<td>
optional. default is <code>None</code>
<p>
The Maven packaging specifier (ex: "jar").
</p>
</td>
</tr>
<tr id="maven.artifact-classifier">
<td><code>classifier</code></td>
<td>
optional. default is <code>None</code>
<p>
The Maven artifact classifier (ex: "javadoc").
</p>
</td>
</tr>
<tr id="maven.artifact-override_license_types">
<td><code>override_license_types</code></td>
<td>
optional. default is <code>None</code>
<p>
An array of Bazel license type strings to use for this artifact's rules (overrides autodetection) (ex: ["notify"]).
</p>
</td>
</tr>
<tr id="maven.artifact-exclusions">
<td><code>exclusions</code></td>
<td>
optional. default is <code>None</code>
<p>
An array of exclusion objects to create exclusion specifiers for this artifact (ex: maven.exclusion("junit", "junit")).
</p>
</td>
</tr>
<tr id="maven.artifact-neverlink">
<td><code>neverlink</code></td>
<td>
optional. default is <code>None</code>
<p>
Determines if this artifact should be part of the runtime classpath.
</p>
</td>
</tr>
</tbody>
</table>
<a name="#maven.exclusion"></a>
## maven.exclusion
<pre>
maven.exclusion(<a href="#maven.exclusion-group">group</a>, <a href="#maven.exclusion-artifact">artifact</a>)
</pre>
Generates the data map for a Maven artifact exclusion.
### Parameters
<table class="params-table">
<colgroup>
<col class="col-param" />
<col class="col-description" />
</colgroup>
<tbody>
<tr id="maven.exclusion-group">
<td><code>group</code></td>
<td>
required.
<p>
The Maven group name of the dependency to exclude, e.g. "com.google.guava".
</p>
</td>
</tr>
<tr id="maven.exclusion-artifact">
<td><code>artifact</code></td>
<td>
required.
<p>
The Maven artifact name of the dependency to exclude, e.g. "guava".
</p>
</td>
</tr>
</tbody>
</table>