截止目前2021年8月,opendaylight已经发布了氢hydrogen版本、硅silicon版本等10多个版本。氖neon版本之前,ODL的java版本为8系列,氖neon版本之后为java11版本。考虑到java的版权问题,考虑使用java8版本。
hello project
参考教程Developing Apps on the OpenDaylight controller
第一部分 获取项目框架
1.首先将https://github.com/opendaylight/odlparent/setting.xml文件拷贝到本地maven仓库目录下。
2.项目框架生成命令,1.1.3为neon-sr3版本(真实是1.2.2版本,solium-sr2版本(java-8))
mvn archetype:generate -DarchetypeGroupId=org.opendaylight.archetypes -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeCatalog=remote -DarchetypeVersion=1.1.3
3.输入项目坐标属性
Define value for property 'groupId': : org.opendaylight.hello
Define value for property 'artifactId': : hello
Define value for property 'version': 1.0-SNAPSHOT: : 1.0.0-SNAPSHOT
Define value for property 'package': org.opendaylight.hello: :
Define value for property 'classPrefix':
Define value for property 'copyright': : chyi
4.编译
cd hello
mvn clean install -DskipTests -Dcheckstyle.skip
5.运行
cd karaf\target\assembly\bin
.\karaf.bat
6.使用eclipse导入hello代码(File->import->existing maven project)
添加helloworld rpc API
7.修改文件api/src/main/yang/hello.yang
代码如下:
module hello {
yang-version 1;
namespace "urn:opendaylight:params:xml:ns:yang:hello";
prefix "hello";
revision "2015-01-05" {
description "Initial revision of hello model";
}
//add snippet
rpc hello-world {
input {
leaf name {
type string;
}
}
output {
leaf greeting {
type string;
}
}
}
//add end
}
在hello/api
目录下使用命令mvn clean install -DskipTests -Dcheckstyle.skip
编译,odl会基于这个yang文件生成相应的接口函数,下面实现接口函数
8.在目录impl/src/main/java/org/opendaylight/hello/impl/
下创建文件HelloWorldImpl.java
,内容如下:
package org.opendaylight.hello.impl;
import com.google.common.util.concurrent.ListenableFuture;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang