onos中引入外部依赖

ONOS通过bazel进行依赖管理,外部依赖在generate_workspace.bzl文件中定义。可以手动编辑此文件添加依赖,或者使用onos-lib-gen工具,配合deps.json自动更新WORKSPACE。onos-lib-gen读取deps.json中的maven依赖并生成workspace.bzl。为了优化生成速度,可以修改AetherResolver的CENTRAL_URL为更快的maven仓库地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前版本的onos使用的是bazel进行依赖管理的

那么对于外部依赖的管理也由bazel负责

在bazel的官方文档中也有对应的说明,详细可参考https://bazel.google.cn/external/overview
bazel

在ONOS中,通过查看源码根目录下的WORKSPACE可以看到关键信息:
workspace

load(“//tools/build/bazel:generate_workspace.bzl”, “generated_maven_jars”)

对于外部依赖的引入是由generate_workspace.bzl完成的,此文件存放在项目的tools/build/bazel路径下,如下图:
generate_workspace

在此文件中定义了依赖包的具体远程地址
workspace_detail

每个包的依赖都和maven仓库中的资源对应。

方式一(generate_workspace.bzl)

综上所述,如果要添加其他的依赖包,在 /tools/build/bazel:generate_workspace.bzl 文件中新增对应的jar包资源即可,详细步骤照着已有的配置项添加即可(有点繁琐添加时需要仔细copy额~)

需要提一下的是:配置中的jar_sha256为对应jar的sha256的值,可以通过各种工具进行查看。
如在windows下,可以使用系统自带的certutil工具获取出文件对应的sha256值。

certutil -hashfile .\fastjson-1.2.53.jar SHA256certutil

方式二(推荐:deps.json+libgen)

在看generate_workspace.bzl文件时,在此文件内容最上面有这样的一段描述:

# ***** This file was auto-generated at Fri, 16 Apr 2021 09:17:29 GMT. Do not edit this file manually. *****
# ***** Use onos-lib-gen *****

即:此文件是自动生成的,不要手动编辑。使用onos-lib-gen就可以了。

那么onos-lib-gen为何物?
全局搜索一下~
libgen

tools/build下的libgen模块
快速看一下它的main类,仿佛就知道了个大概
gen_main

即:BazelLibGenerator类有两个参数,分别为:

  1. input-deps.json
  2. output-workspace.bzl

它会根据传入的依赖json描述文件,自动生成bazel对应的workspace.bzl文件

在onos项目中,依赖json描述文件存放的位置为:deps/deps.json,里面就是非常熟悉的maven依赖了

添加依赖测试

为了测试,这里以添加fastjson依赖为例:

其对应的maven依赖如下:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.53</version>
</dependency>

将其转为deps.json中依赖包的格式:

append

“fastjson”:“mvn:com.alibaba:fastjson:1.2.53”

之后运行onos-libgen进行自动生成。

具体地:
先切换到onos-libgen对应的jar包目录,如果没有对应jar的话,就自己先用maven把它编译一下生成jar。

如我这里编译出来对应的jar的目录为:

tools/build/libgen/target/

再指定运行参数(根据具体目录修改):

java -jar onos-libgen-2.3-SNAPSHOT.jar ~/Desktop/onos/deps/deps.json ~/Desktop/onos/tools/build/bazel/generate_workspace.bzl

do gen

之后就能看到在生成了。

生成性能优化

通过查看onos-libgen的源码可知,它默认是使用的maven中央仓库的地址生成的

为了提高生成速度,咱们可以通过修改onos-libgen中下载jar包的代码提提速:

onos-libgenAetherResolver类的CENTRAL_URL修改为比较快的maven仓库地址(默认为 https://repo1.maven.org/maven2/),可以修改为公司的私服地址也可以是公网的maven仓库地址,如修改为阿里云的maven仓库地址的某个地址:

http://maven.aliyun.com/nexus/content/groups/public
http://maven.aliyun.com/nexus/content/repositories/central/
http://maven.aliyun.com/nexus/content/repositories/jcenter/
http://maven.aliyun.com/nexus/content/repositories/sping/

fast
修改后再重新生成jar包再次运行,就会快上很多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水中加点糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值