首页 > 代码库 > 从零开始学OpenDaylight之四:Maven工具
从零开始学OpenDaylight之四:Maven工具
一、写在前面
小公司启动开发新项目的做法:项目经理从团队抽调1名开发人员进行项目工程框架的搭建,剩余的开发人员先研究项目需求,并着手准备业务逻辑的设计。本地项目工程搭建后,上传SVN或git配置库,告知其他开发人员可以下载项目工程,启动开发了。开发人员将项目工程导入到IDE(Eclipse)中,进行代码的编写、编译、测试以及打包等操作,本地代码确认无误后,上传配置库。
从公司的现实考量,做好一个项目的时间越短,带来的市场空间和效益就有优势。这就要求除业务逻辑翻译的代码必须人工来做外(这里也有部分代码生成工具参与),没有技术含量并且重复的工作能自动化最好就自动化。从启动开发新项目的过程可以看出,诸如编译、单元测试、打包和部署等称为“Build-构建”的工作,最好能做到全自动流水线一样,只需要一条简单的命令就可以自动完成,这样可以大大节省时间。
于是,需要有人使用软件的方法来让这一系列动作自动化。早期的构建管理的解决方法有:
(1). Make;
(2). Ant(Another Neat Tool):另一个整洁的工具;
目前,使用较多的是Maven、Gradle,本文重点介绍Maven。
二、Maven基础
1. 什么是Maven?
译为“专家”,Maven是一个跨平台的项目管理工具,它可以帮助开发者完成以下工作: 构建、依赖、发布 、分发 以及测试报告等等;
2. Maven核心概念
坐标、 依赖、 仓库、 生命周期和插件;
(1). 坐标:
类比卫星通信进行定位一样,Maven中标识一个文件,使用
groupId: com.mycompany
artifactId: hello
version 3.0-SNAPSHOT
(2). 仓库:
Maven通过仓库来统一管理文件,同时,为了实现重用,项目构建后生成的构件也安装或部署到仓库中。涉及如下几个概念:
A. 本地仓库:一般来说,在Maven项目目录下,没有诸如lib这样用来存放依赖文件的目录。当Maven在执行编译或测试时,如果需要依赖文件,它总是基于坐标使用本地仓库的依赖文件。通过setting.xml文件标识:
<localRepository>D:/repository/</localRepository>
B. 远程仓库:将本地仓库类比为书房,远程仓库可理解为书店;
C. 中央仓库:是一个默认的远程仓库;包含了大部分的开源JAVA构件以及源码等信息。
D. 私服:是一种特殊的远程仓库,架设在公司内部。当下载构件时,从私服下载,如果私服不存在,则私服请求提供服务。
OpenDayLight私服: https://nexus.opendaylight.org/#nexus-search;quick~opendaylight-startup-archetype
(3). 生命周期:
开发人员每天的工作就是对项目进行清理、编译、测试及部署。不同的公司以及同一公司内部不同项目间,使用的构建方式可能并不相同,有的是手工,有的自动化,有的半手工半自动化,即使全是自动化,使用的脚本也不相同,不具有普适性。Maven的生命周期就是为了对所有的构建过程进行抽象和统一,它包含项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建步骤。
mvn clean: 执行clean生命周期pre-clean和clean阶段;
mvn clean install: 执行clean生命周期pre-clean和clean阶段,default生命周期的validate~install 所有阶段;
说明:
mvn clean install -Dmaven.test.skip=true; 中的-D使用了JAVA表示方式,-D set a system property(设置系统属性)
(4). 插件:
插件完成具体的任务,与Maven的生命周期相互绑定。
maven-surefire-plugin: 测试插件
如何跳过?
A. -DskipTest
B.-Dmaven.test.skip=true
测试失败后,不退出:-Dmaven.test.failure.ignore=true
三、Archetype
主要目的是:快速创建项目,并遵循一致的项目结构和配置约定。
官方地址:http://maven.apache.org/archetype/maven-archetype-plugin/index.html
OpenDaylight相关的项目,使用的是opendaylight-startup-archetype
mvn archetype:generate -DarchetypeGroupId=org.opendaylight.controller -DarchetypeArtifactId=opendaylight-startup-archetype -DarchetypeVersion=1.3.0-Carbon
说明:本文部分信息来自互联网资料整理
从零开始学OpenDaylight之四:Maven工具