在通过 onos wiki docs 和 github README 进行深入研究后,我发现以下这些方法对我有用:-
自定义 gui2 应用程序的 ONOS 源代码更改(运行时实现)
(在确保您使用正确版本的 onos 之后进行这些更改 - 在这种情况下检查 onos-2.4 分支):-
假设我们的应用程序有两部分,一是后端,一是前端。
后端应用程序代码可以独立于 onos 源代码,然后我们可以将其安装在我们编译的 onos 应用程序中,就像我们在 2.0 之前的版本中所做的那样。
对于前端应用程序代码,所有更改将在onos 源代码的onos/web/gui2/目录下进行。这确保了我们只需要在前端代码更改而不是整个源代码时构建新的 gui2 oar。这允许我们在我们编译的 onos 应用程序中重新安装gui2 oar。
让前端应用程序的目录称为customApp。
在您的 onos 源代码中,
转到onos/web/gui2/src/main/webapp/app/view 并创建customApp目录。
customApp目录可以具有以下结构:-
- 创建一个名为 custom-app 的目录,其中将包含以下文件:-
- customApp.component.ts
- customApp.component.html
- customApp.component.css
- 一个名为 customApp.module.ts 的文件,它是我们的顶级 Angular 模块。
- 一个 BUILD bazel 文件。
注意:-随着越来越多的组件被添加,您可以自由地为 Angular 应用程序遵循自己的目录结构。此结构是 onos gui 默认遵循的结构(参见设备以供参考)。命名约定并不严格。
转到onos/web/gui2/src/main/webapp/app并打开BUILD文件。
转到ng_module的deps部分并在其中添加//web//gui2/src/main/webapp/app/view/customApp:gui2-view-customApp。转到onos/web/gui2/src/main/webapp/onos-routing.module.ts并在onosRoutes列表中添加以下内容:-
<Route>
{
path:"custom-app",
pathMatch:"prefix",
loadChildren:()=>import("./view/customApp/customApp.module.ts
").then((m)=>m.CustomAppModule)}
}
转到顶级目录,即onos并运行bazel build //web/gui2:onos-web-gui2-oar。这将在onos/bazel-bin/web/ gui2下生成onos-web-gui2-oar.oar。
在 onos 应用程序中重新安装并激活此 oar 文件。
转到http://:8181/onos/ui/login.html并将onos/rocks作为用户名/密码。
打开导航面板,您将在“其他”部分下看到您的自定义 gui2 应用程序链接。单击它以查看您的自定义 gui2 应用程序。
自定义 gui2 应用程序的 ONOS 源代码更改(构建时实现)
(在确保您使用正确版本的 onos 之后进行这些更改 - 在这种情况下检查 onos-2.4 分支):-
让我们的自定义 gui2 应用程序的名称为custom-app。
创建一个名为custom-app的新文件夹并将其添加到onos/apps。
在此文件夹中,您可以在onos/apps中的roadm应用程序中拥有应用程序结构。
转到onos/tools/build/bazel/modules.bzl并在APP_MAP部分下,添加以下内容: -
"//apps/custom-app:onos-apps-custom-app-oar":[]
转到onos/web/gui2/src/main/webapp/app/BUILD.bazel并在 ng_module 的deps部分下,添加以下内容: -
"//apps/custom-app/web/custom-app-gui:custom -app-gui"
转到onos/web/gui2/src/main/webapp/onos-routing.module.ts并在onosRoutes列表中添加以下内容:-
<Route>
{
path:"custom-app-gui",
pathMatch:"prefix",
loadChildren:()=>import("../../../../../../apps/custom-app/web/custom-app-
gui/lib/custom-app-gui-lib.module").then((m)=>m.CustomAppGuiLibModule)}
}
返回到onos根目录并运行bazel build onos(确保预先设置了 bazel)。
以上操作会输出onos /bazel-bin目录下的onos.tar.gz。
将此目录复制并移动到所需位置并解压缩。
转到onos-2.4.1-SNAPSHOT文件夹(对onos.tar.gz的解压缩操作输出具有此名称的文件夹,我们可以通过更改另外两个配置文件来更改此版本名称)。
进入 bin 并执行./onos-service s命令。
使用另一个终端打开 karaf 客户端,方法是转到onos-2.4.1-SNAPSHOT/apache-karaf-4.2.8/bin并执行./client命令。
在客户端外壳中,键入 app activate org.onosproject.custom-app。这将激活我们的自定义 gui2 应用程序(您也可以跳过 karaf 客户端部分以使用 onos gui 来激活应用程序)。
转到http://:8181/onos/ui/login.html并将onos/rocks作为用户名/密码。
打开导航面板,您将在“其他”部分下看到您的自定义 gui2 应用程序链接。单击它以查看您的自定义 gui2 应用程序。