如何为maven_aar规则指定maven存储库?

时间:2017-04-14 02:31:57

标签: bazel

如何为maven_aar规则指定maven存储库?似乎maven_aar无法识别我的maven_server

maven_server(
    name = "default",
    url = "http://xxx"
)

非常感谢!

2 个答案:

答案 0 :(得分:1)

它使用常规maven构造而不是maven_server。 从这个封闭的问题(How to specify a maven repository for the maven_aar rule?): “... maven_server规则仅适用于本机maven_jar规则。我们以不同的方式使skylark maven_jar和mane_aar规则。而是使用标准的maven设置XML约定。

https://maven.apache.org/settings.html

您可以将存储库放在计算机上的全局maven设置文件中,也可以创建自定义settings.xml并将其路径放在maven_aar的'settings'属性中。“

答案 1 :(得分:0)

maven_jar中的maven_aar@bazel_tools//tools/build_defs/repo:maven_rules.bzl规则从Maven安装设置文件${maven.home}/conf/settings.xml中读取Maven设置,用户安装设置文件${user.home}/.m2/settings.xml或来自settings规则的maven_aar属性中指定的路径。

要为项目指定存储库,您可能希望编写Maven settings.xml文件并将其检入存储库

例如,使用使用JCenter作为中央存储库的Maven配置文件设置依赖于Volley的android_binary

$ cat WORKSPACE
load("@bazel_tools//tools/build_defs/repo:maven_rules.bzl", "maven_aar")
maven_aar(
    name = "volley",
    artifact = "com.android.volley:volley:1.0.0",
    settings = "//:settings.xml",
)

$ cat settings.xml
<?xml version='1.0' encoding='UTF-8'?>
<settings
    xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd'
    xmlns='http://maven.apache.org/SETTINGS/1.0.0'
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
  <profiles>
    <profile>
      <repositories>
        <repository>
          <id>central</id>
          <name>bintray</name>
          <url>http://jcenter.bintray.com</url>
        </repository>
      </repositories>
      <id>bintray</id>
    </profile>
  </profiles>
  <activeProfiles>
    <activeProfile>bintray</activeProfile>
  </activeProfiles>
</settings>

$ cat BUILD
android_binary(
    name = "app",
    srcs = glob(["*.java"]),
    manifest = "AndroidManifest.xml",
    custom_package = "com.example.app",
    deps = ["@volley//aar"],
)