ONOS再升级——采用Bazel工具构建APP流程详解

ONOS已更新过无数版本,构建工具的选择也在变化。最初ONOS采用Maven编译,从1.7之后改用Buck,但1.14版本开始采用了Bazel编译工具。能够使用ONOS实现自己所需功能的APP是我们要掌握的基础技能。从网上搜集的资料来看,大多数新建自己的APP是采用的Maven工具,但现今ONOS 1.14版本源码中已经没有了pom.xml文件(Maven工程中重要的依赖关系文件),取而代之的是Bazel的Build文件,这意味着,如果仍采用Maven工具构建APP,此APP就会成为一个第三方应用,无法嵌入到ONOS系统内部。以下根据自己的操作经验和资料查阅,介绍一下采用Bazel工具构建新APP的流程。

一 了解Bazel

Bazel是Google开源的一个构建工具,和Make、Bucks、 Maven等类似。Bazel被广泛应用于Google内部,它的优点如下:

  1. Speed up your builds and tests

Bazel借助高级本地和分布式缓存,优化的依赖关系分析和并行执行,可获得快速和增量构建。

     2.One tool, multiple languages

Bazel可用来构建和测试Java、 C++ 、Android、IOS和各种其他语言平台,并可运行在Mac、 Windows 、Linux等不同系统上。

     3.Scalable

可处理任意大小的代码库,可处理多个库,也可以处理单个库。

     4.Extensible to your needs

使用Bazel扩展语言可支持新语言和新平台。

二 Bazel的常用命令

三 构建流程

有关ONOS的部署详情参考官方Wiki:Developer Guide,这里不做赘述,要注意的是Using an IDE部分要采用更新的Using an IDE with ONOS 1.14 or higher (Bazel Build)。

将ONOS源码导入IntelliJ之后,可以发现app代码结构中,已经没有了pom文件,Buck文件仍有保留,而BUILD文件则是需要我们修改的重要的构建规则文件。

新建包,Apps-右键New-选择New Bazel Package。

写APP的包名(包名可包含大小写字母、数字、及/ .  - _ $  ( )等符号,但实验表明若包名中加有’-‘,之后无法新建 Java Class,故当出现此类问题时可考虑是文件命名问题 ),库这里任意选一个即可,因为所给选项里并没有我们要使用的库文件,之后我们会在BUILD文件里修改库文件。

完成后可以看到生成的文件夹及BUILD文件。

在文件夹中添加Java Class。

生成如下java文件,文件中已有了package包名,功能代码都在此文件中编写。

和Makefile一样,使用Bazel编译也必须满足它的项目结构要求,仿照现有APP的项目结构(如典型APP fwd),手动添加src,main等文件夹,并相应修改package包名。

下图是fwd的BUILD文件,COMPILE_DEPS 指出了编译依赖,包括CORE_DEPS核心依赖、 KRYO序列化框架依赖、 CLI命令行依赖等;osgi_jar_with_tests是我们要用到的库文件,还可能用到的库文件有osgi_jar,他们都在tools->build->bazel->osgi_java_library.bzl文件下;onos_app定义在tools->build->bazel目录下的onos_app.bzl。

仿照现有BUILD文件,改写自己的BUILD文件,再完成所需功能的java文件,就可以进行编译了。右键Run Bazel test,进行编译,若想要跳过check_style检查,可在BUILD文件osgi_jar/osgi_jar_with_tests中添加语句suppress_checkstyle = True。编译结果会产生一个.oar(Onos App aRchive)文件,这就是我们需要的APP安装文件。

在All Files中搜索.oar文件,打开文件所在位置,再Open in Terminal会发现此文件路径十分诡异,但没有关系,这就是我们要的安装文件onos-apps-Paula_test-oar.oar。

现在就到了安装app的时候了。先编译构建一下代码,onos文件夹下执行bazel build onos。 启动onos,执行bazel run onos-local -- clean debug,READY之后,另开终端进onos文件夹执行tools/test/bin/onos localhost。Onos启动成功后开始安装app,在文件目录下执行onos-app localhost install onos-apps-Paula_test-oar.oar 。

ONOS日志里会提示安装成功,onos命令行执行 >onos -s,也能看到已安装的app。安装成功之后,激活你的APP就可以愉快地使用它啦。

此外,卸载APP等操作可以查看帮助命令。

 

本文和大家分享了ONOS采用Bazel工具后的APP构建流程,至于APP的代码编写,会在之后的文章中和大家分享。

 

以上是波澜学习过程中的一点心得,第一次写文章,不足之处还望指正。邮箱: yqxie@bupt.edu.cn

 

 

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值