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包到opendaylight的plugins目录下进行部署。
3、 Eclipse创建plug-in项目
通过IDE创建plug-in项目,然后进行编辑、调试,导出plug-in development中的deployable plug-ins and fragments类型的项目。最后将导出的jar包copy到opendaylight的plugins目录下进行部署。
修改OpenDaylight中模块代码
基本过程
1、 找到对应的plug代码,修改代码
2、 修改对应的manifest文件、pom.xml(这里文件的修改是可选的)。
3、 进入该plug-in的目录,执行mvn install
4、 从maven的本地repository手动copy jar包到opendaylight的plugins目录下进行部署,更新后自动被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。注意:为了方面建议安装jad、classlocator等插件,为了看到更多的日志信息,可以在日志的配置文件中调整打印级别。
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进行远程调试,从中去分析、验证执行逻辑。
注:这里可知在非集群安装中,所有的OpenDaylight的plug-ins都运行在一个虚拟机中。
本文介绍了如何在Eclipse环境下部署、调试OpenDaylight插件,包括创建不同类型的项目、修改代码、使用mvninstall进行打包及部署,以及在Eclipse中运行和分析代码的方法。重点涵盖了三种部署方式、代码修改流程以及如何利用Eclipse进行远程调试,以提升开发效率。
26万+

被折叠的 条评论
为什么被折叠?



