新项目开发的通常做法:项目经理从团队抽调1名开发人员进行项目工程框架的搭建,剩余的开发人员先研究项目需求,并着手准备业务逻辑的设计。本地项目工程搭建后,上传svn或git配置库,告知其他开发人员可以下载项目工程,启动开发了。开发运维人员便进行代码的编写、编译、测试以及打包等系列操作。我们将这一系列的操作称为“构建”。
构建的实质是将我们编写的java源文件、xml配置文件、html页面、css和js文件等,通过某种方式组合在一起,变为可对外服务项目的过程。同时,构建过程中很多都是没有技术含量且重复的工作,手工操作很无趣且太麻烦。最好能够由手工模式转变为自动化模式,这样可以大大节省时间。
构建的工具主要有:
(1). make;
(2). ant(another neat tool):另一个整洁的工具;
(3). maven;
(4). gradle;
本文将介绍在sdn控制器opendaylight中使用的maven工具。
一、mavenmaven是apache组织中一个开源项目,主要用于基于java平台的项目构建、依赖管理和项目信息管理。下面来看下其几个核心概念:
1.坐标坐标用于唯一标识构件(如jar,war等),坐标的元素包括groupid、artificatid、version、packaging、classifier,其中前3个是必须定义的,后2个是可选的。
① groupid:定义当前maven项目隶属的实际项目。
② artificatid:定义实际项目中的一个maven项目(模块),建议使用实际项目名称作为其前缀。
③ version:定义maven项目当前所处的版本。
④ packaging:定义maven项目的打包方式。
⑤ classifier:帮助构建输出的一些附属构件。
2.生命周期如前所述,软件人员每天的工作:项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等等,maven对这些工作统一抽象为三个相互独立的生命周期:clean、default和site。其中,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。下面详细说明每种生命周期:
(1).clean生命周期的目的是清理项目,包含三个阶段:
① pre-clean执行一些清理前需要完成的工作;
② clean清理上一次构建生成的文件;
③ post-clean执行一些清理后需要完成的工作。
(2).default生命周期的目的是构建项目,定义构建时所需要执行的所有步骤:
其中重要阶段的解释如下:
(3). pre-site的目的是建立项目站点,包含3个阶段:
① site生成项目站点文档;
② post-site执行一些在生成项目站点之后需要完成的工作;
③ site-deploy将生成的项目站点发布到服务器上。
需要说明的是,从命令行执行maven任务实质上就是调用maven的生命周期阶段。例如执行命令mvn clean install,则调用clean生命周期的clean阶段和default生命周期的install阶段,而实际上执行的阶段为clean生命周期的pre-clean、clean阶段,以及default生命周期的从validate至install的所有阶段。
3.插件在maven的生命周期中对软件人员的工作进行了抽象,相当于做一个模板,具体的实现则由插件来完成。下面列出default生命周期的内置插件绑定关系及具体任务:
更加详细的内容可以参考apache maven官网:
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
4.仓库maven通过仓库来统一管理文件,同时,为了实现重用,项目构建后生成的构件也安装或部署到仓库中。maven仓库的分为本地仓库和远程仓库,而远程仓库又包含中央仓库、私服和其他公共库。初始状态下,本地仓库是不存在的,当用户执行maven命令后,则创建本地仓库,并根据实际需要,从远程仓库下载构件至本地仓库。
(1).本地仓库:一般来说,在maven项目目录下,没有诸如lib这样用来存放依赖文件的目录。当maven在执行编译或测试时,如果需要依赖文件,它总是基于坐标使用本地仓库的依赖文件。通过setting.xml文件标识:
d:/repository/
(2).远程仓库:相对本地仓库而言;
(3).中央仓库:是一个默认的远程仓库;包含了大部分的开源java构件以及源码等信息。maven的安装文件自带了中央仓库的配置。在maven的安装目录下:$maven_home\\lib\\maven-model-builder-3.3.9.jar
central为中央仓库的唯一标识。
(4).私服:是一种特殊的远程仓库,架设在公司内部。当下载构件时,从私服下载,如果私服不存在,则私服请求提供服务。
5.archetype意为“原型”,可以理解为maven项目的模板,以便用户可以快速创建项目,同时针对同类项目保持相同的项目结构及配置约定。archetype是通过maven-archetype-plugin插件实现,官网链接:
http://maven.apache.org/archetype/maven-archetype-plugin/
三、maven在opendaylight的使用opendaylight使用maven工具进行项目构建和依赖管理,并在构建简单的简易app开发一文中对maven的基础进行介绍,链接如下:
https://docs.opendaylight.org/en/latest/developer-guide/developing-apps-on-the-opendaylight-controller.html
1. 修改settings.xml为了从远程仓库下载opendaylight版本的依赖包,首先需要修改maven的settings.xml,并指定远程仓库的地址。事实上,opendaylight提供了预先写好的settings.xml文件,其下载地址为:
https://github.com/opendaylight/odlparent/blob/stable/carbon/settings.xml
https://raw.githubusercontent.com/opendaylight/odlparent/master/settings.xml
具体内容解释如下:
maven安装以后,setting.xml文件存在两个地方:
① usr_home/.m2/settings.xml,表示当前用户范围的配置文件;
② maven_home/conf/settings.xml,表示全局范围配置文件,修改后将影响本机所有的用户配置。
详细的setting文件说明参见链接:
https://maven.apache.org/settings.html。2. 选择archetypearchetype是一个maven项目模板工具包,使用archetype来生成项目骨架,可以使得开发人员在开发新的应用程序时,使用与opendaylight风格一致的最佳实践方法。
opendaylight应用创建的archetype可通过如下链接查询:https://nexus.opendaylight.org/#nexus-search;gav~org.opendaylight.archetypes~~~~
执行命令:
通过交互构建hello示例应用,生成的文件视图大致为:
深圳宝能进驻通讯行业
苹果已经收购了一家专注于制造AR眼镜镜片的初创公司Akonia Holographics
LONWORKS现场总线技术与RS485总线技术的优劣
基于边缘计算的智能工厂能耗优化解决方案
一加手机3T:公认的国产手机中拍照的标杆
什么是OpenDaylight的Maven
英语学习要从小开始,讯飞智能学习机做孩子的好“老师”
国家先进计算产业创新中心山西产业基地正式开工
联想小新Pad Pro&三星Galaxy watch 4开箱体验
midiplusstudio2声卡专业详评
新纪录将可能开创太阳能电池的新纪元
LED产业链结构和格局,LED行业发展现状及前景预测
一文了解bacnet协议的格式和转成modbus协议的方法
传输设备PDH接口对接问题
基于Arduino的PWM与红外信号处理
滤波电容原理
市场竞争激烈,新能源汽车的未来在哪里
10KV宝力科技配电工程电力监控系统的设计与应用
天然气报警器在日常生活中的应用
无人机控制系统原理