OpenDaylight实战手记(三)OpenDaylight中使用Eclipse的几个Tricks

本文介绍了如何在Eclipse环境下部署、调试OpenDaylight插件,包括创建不同类型的项目、修改代码、使用mvninstall进行打包及部署,以及在Eclipse中运行和分析代码的方法。重点涵盖了三种部署方式、代码修改流程以及如何利用Eclipse进行远程调试,以提升开发效率。

 OpenDaylight中使用Eclipse的几个Tricks

构建新的bundle放入OpenDaylight环境中运行

三种方法:

1、  手工

手工编译java文件,手工编辑manifest文件,手工打包,最后放到目录:controller\opendaylight\distribution\opendaylight\target\distribution.opendaylight-osgipackage\opendaylight\plugins,完成部署。

2、  Eclipse创建maven项目

通过IDE创建maven项目,然后进行编辑、调试,然后mvn install,最后从maven的本地repository手动copy jar包到opendaylightplugins目录下进行部署。

3、  Eclipse创建plug-in项目

通过IDE创建plug-in项目,然后进行编辑、调试,导出plug-in development中的deployable plug-ins and fragments类型的项目。最后将导出的jarcopyopendaylightplugins目录下进行部署。

修改OpenDaylight中模块代码

基本过程

1、  找到对应的plug代码,修改代码

2、  修改对应的manifest文件、pom.xml(这里文件的修改是可选的)。

3、  进入该plug-in的目录,执行mvn install

4、  maven的本地repository手动copy jar包到opendaylightplugins目录下进行部署,更新后自动被OSGI框架感知。

Eclipse下源代码运行OpenDaylight

1、利用eclpsede import “existing maven project”,选择源代码的controller目录,这时候导入所有maven项目,但是不进行复制,Eclipse会自动解析pom.xml文件,下载依赖的jar包。

2、运行或者debug OSGi framework下的opendaylight-osgi-launcher(disribution bundle)

导入到eclipse之后在run配置中,执行opendaylight-assembleit来干净编译整个项目。

几个target的含义如下。

opendaylight-application.launch =>运行控制器。

opendaylight-assembleit-fast.launch =>仅编译所选资源 (Project / Bundle)

opendaylight-assembleit-noclean.launch =>编译所有bundle,但不执行clean

opendaylight-assembleit-skiput.launch =>编译所有bundle,但不进行Unit Tests

opendaylight-assembleit-sonar.launch =>编译所有bundle并运行Sonar (Code-Coverage, Stati

c-Analysis tool)

opendaylight-assembleit.launch =>干净编译所有bundle

opendaylight-sonar-fast.launch =>仅对所选的资源运行Sonar任务。

opendaylight-sonar.launch => 执行所有的Sonar 任务。

利用 Eclipse分析OpenDaylight代码

1、上述方便要把所有的plug-in都调试通需要下载很多包,并且有很多依赖关系,有一个plug-in出现问题都将是整个OpenDaylight无法联调。为了更好的阅读代码一般可以将关注的plug-in的代码建立java project。注意:为了方面建议安装jadclasslocator等插件,为了看到更多的日志信息,可以在日志的配置文件中调整打印级别。

2、如果要看某个plug-in代码某时刻的运行逻辑,可以进行远程调试,即打开java远程端口,编辑target\distribution.opendaylight-osgipackage\opendaylight下的run.bat文件,在java命令所在的这一行前面插入调试参数:

“-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n”。这一行变为:

"%JAVA_HOME%\bin\java.exe" %*-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=n-Djava.io.tmpdir="!basedir!work\tmp" -Dosgi.install.area=!basedir! -Dosgi.configuration.area="!basedir!configuration" -Dosgi.frameworkClassPath=!fwcp! -Dosgi.framework="file:\!basedir!lib\org.eclipse.osgi-3.8.1.v20120830-144521.jar" -classpath !cp! org.eclipse.equinox.launcher.Main -console –consoleLog。这样启动的OpenDaylight就可以使用Eclipse进行远程调试,从中去分析、验证执行逻辑。

注:这里可知在非集群安装中,所有的OpenDaylightplug-ins都运行在一个虚拟机中。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值